#mysql #select #conditional-statements #where
#mysql #выберите #условные операторы #where-предложение
Вопрос:
У меня есть два столбца базы данных в базе данных mysql, A и B. В запросе выбора я хочу реализовать эту логику:
Выберите строки, где A равно ‘X’. Если A не задано в строке, то проверьте и выберите строку, только если столбец B =’Y’.
Таким образом, можно сказать, что столбец B является резервным для столбца A.
Как я мог бы создать запрос SELECT с ‘X’ и ‘Y’ в качестве входных данных для предложения WHERE?
Ответ №1:
Используйте логическую логику:
SELECT *
FROM table
WHERE A = 'X' OR (A IS NULL AND B = 'Y')
Комментарии:
1. У меня есть вопрос по этому решению. Этот запрос вернет как A, так и B (из-за ‘SELECT *’), и, возможно, один из них будет равен null. Есть ли способ НЕ возвращать A в случае, если оно равно null?
2. @frabala Если у вас есть вопрос, который вы должны задать, используя ссылку «Задать вопрос» вверху, вы получите гораздо больше ответов, чем комментарий к старому ответу за прошлый год 🙂
Ответ №2:
Я думаю, это должно сработать:
SELECT * FROM table
WHERE (A='X') OR ((A IS NULL) AND (B='Y'))
Ответ №3:
SELECT * FROM table WHERE A='X' OR (A IS NULL AND B='Y')