我有一个问题:
SELECT * FROM `users`
WHERE (`firstname` LIKE 'Luke' AND `lastname` LIKE 'Skywalker') OR
(`firstname` LIKE 'Foo' AND `lastname` LIKE 'Bar') OR
(`firstname` LIKE 'Tom' AND `lastname` LIKE 'Turner');
但我想通过使用 where ... in ... 使其更具可读性 我试过了
SELECT * FROM users
WHERE `firstname`
IN ('Luke','Foo','Tom') AND `lastname` IN ('Skywalker','Bar','Turner');
但不幸的是,这也将匹配 "Tom Skywalker"
、"Foo Turner"
以及您能想到的所有组合。
我必须选择名字和姓氏(可能还有更多字段,如出生日期),因为我从外部 API 获取数据,我必须检查这些名字是否在我们的系统中。
最佳答案
SELECT *
FROM users
WHERE (firstname, lastname)
IN ( ('Luke', 'Skywalker')
, ('Foo' , 'Bar')
, ('Tom' , 'Turner')
)
;
关于Mysql Where ... In ... AND where ... in ... 应该只匹配相同的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10111153/