Значение столбца mysql SELECT зависит от другого столбца - PullRequest
1 голос
/ 15 декабря 2011

У меня есть такая таблица:

ID | Type   | woof | meow
1  |  dog   |  1   |  0
2  |  cat   |  1   |  1
3  |  dog   |  0   |  0
4  |  cat   |  0   |  1

Я хочу SELECT DISTINCT id, type WHERE, если type = dog, woof = 1, а если type = cat, то мяу = 1. Таким образом, мой ожидаемый результат будет состоять из строк 1,2 и 4.

Как я могу это сделать? Я предполагаю что-то вроде причудливого оператора IF или CASE, но я не мог легко понять это из документации mysql.

Спасибо

Ответы [ 2 ]

5 голосов
/ 15 декабря 2011

Вы можете использовать И и ИЛИ:

SELECT DISTINCT id, type 
FROM yourtable
WHERE (type='dog' AND woof=1) OR (type='cat' AND meow=1)

Также обратите внимание, что если ваше поле id уникально (и я предполагаю, что оно есть), то DISTINCT здесь не нужен.

4 голосов
/ 15 декабря 2011

Просто используйте простую булеву алгебру:

SELECT DISTINCT id, type
FROM table
WHERE
  (type = 'dog' AND woof = 1) OR
  (type = 'cat' AND meow = 1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...