Mysql Where ... in ... AND where ... in ...应该只在同一索引上匹配 [英] Mysql Where ... In ... AND where ... in ... should only match on same index

查看:140
本文介绍了Mysql Where ... in ... AND where ... in ...应该只在同一索引上匹配的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个查询:

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 ...使其更具可读性. 我尝试过

But i would like to make it a bit more readable by using a where ... in ... I tried

SELECT * FROM users 
WHERE `firstname` 
    IN ('Luke','Foo','Tom') AND `lastname` IN ('Skywalker','Bar','Turner');

但是不幸的是,它也可以匹配"Tom Skywalker""Foo Turner"以及您可以考虑的所有混合音.

But unfortunately this will also match "Tom Skywalker", "Foo Turner" and all mixes you can think off.

由于我要从外部API获取数据,并且必须检查这些名称是否在我们的系统中,因此我必须选择名字和姓氏(也许还有DOB之类的其他字段).

I have to select on first and lastname (perhaps more fields like DOB) since i am getting data from an external API and i have to check if those names are in our system.

推荐答案

SELECT * 
FROM users
WHERE (firstname, lastname) 
      IN ( ('Luke', 'Skywalker') 
         , ('Foo' , 'Bar') 
         , ('Tom' , 'Turner')
         )
;

这篇关于Mysql Where ... in ... AND where ... in ...应该只在同一索引上匹配的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆