Условие выбора запроса Mysql

#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')