#mysql
#mysql
Вопрос:
У меня есть следующая таблица из 3 столбцов:
---- --------- ------------
| ID | First | Last |
---- --------- ------------
| 1 | Maurice | Richard |
| 2 | Yvan | Cournoyer |
| 3 | Carey | Price |
| 4 | Guy | Lafleur |
| 5 | Steve | Shutt |
---- --------- ------------
Если я хочу искать всех, (Maurice,Guy)
я могу это сделать select * from table where first in (Maurice,Guy)
.
Если я хочу просто найти Maurice Richard
, я могу сделать select * from table where first = "Maurice" and last = "Richard"
.
Как мне создать карту, кратный массив?
[
[Maurice, Richard]
[Guy,Lafleur]
[Yvan,Cournoyer]
]
Если у меня произвольное количество записей, я не могу построить длинный комплекс where (first = "Maurice" and last = "Richard") or (first = "Guy" and last = "Lafleur") or ....
.
Как мне сделать моральный эквивалент where (first, last) in ((Guy,Lafleur),(Maurice,Richard))
?
Ответ №1:
Вы можете сделать это точно так, как вы это описываете:
SELECT *
FROM mytable
WHERE (first, last) IN (('Guy','Lafleur'),('Maurice','Richard'))
Комментарии:
1. Э-э … потому что я думал, что это неверно. Я только что составил этот синтаксис на основе обычного
where somecol in (opt1, opt2, opt3)
, чтобы описать то, что я хотел. Я всегда думал, что вы не сможете этого сделать! Действительно? Я могу? Так забавно!2. Что ж, это действительно работает. Спасибо за скрипку! Снимаю шляпу! (по-видимому, это слишком быстро, это еще не позволяет мне принять ответ. Извините за это. сделаю это через 3 минуты, когда это позволит мне)