У меня есть таблица с информацией о пользователе:
user_id | meta_key | meta_value
-----------+----------+-------------
1 | name | John
1 | surname | Doe
2 | name | Luke
3 | name | Jane
Я хочу выбрать строки с определенным ключом, учитывая список идентификаторов.
If I do:
SELECT meta_value FROM table WHERE meta_key = 'surname' AND user_id IN(1,2,3)
MySQL вернет информацию только для пользователя 1, поскольку у остальных нет фамилии.
Я хотел бы построить запрос, чтобы возвращать точное количество строк в качестве переданных идентификаторов с NULL (или пустой строкой), если у этого конкретного пользователя нет фамилии в таблице.
Я пытался использовать IFNULL(meta_value, "")
, а также использовать IF
, но это не помогает.
Какие-либо предложения? Я уверен, что это тривиальная вещь, но я не могу обойти эту проблему.
Вот SQLfiddle, показывающий проблему: http://sqlfiddle.com/#!9/86eef2/6< /а>
Мой ожидаемый результат будет:
Doe
NULL
NULL
CASE
, но, должно быть, что-то упускаю... - person nico   schedule 22.09.2015CASE
? sqlfiddle.com/#!9/86eef2/10 Обратите внимание, чтоWHERE meta_key
переместился вCASE
сейчас. Я уверен, что можно использовать более короткие операторы, но в учебных целях мне нравится демонстрироватьCASE
, тем более, что это только фрагмент того, что вы на самом деле делаете, и, вероятно, его нужно будет расширить. - person rlb.usa   schedule 22.09.2015