Mysql 选择带有两个IN(列表)参数的查询
使用下表,我如何编写一个mySql查询来提取匹配对的行 我需要获取匹配ID/rID对的行:[101002]、[141003]、[281001]、[401002]Mysql 选择带有两个IN(列表)参数的查询,mysql,sql,select,Mysql,Sql,Select,使用下表,我如何编写一个mySql查询来提取匹配对的行 我需要获取匹配ID/rID对的行:[101002]、[141003]、[281001]、[401002] myTable ID rID rName ------------------ 1 1001 ThisName 10 1002 ThatName *** 10 1001 SomeName 11 1001 OtherName 14 1003 NewName *** 14 1001
myTable
ID rID rName
------------------
1 1001 ThisName
10 1002 ThatName ***
10 1001 SomeName
11 1001 OtherName
14 1003 NewName ***
14 1001 CrazyName
21 1003 OldName
28 1001 GoodName ***
28 1002 SimpleName
31 1003 BadName
40 1002 GreatName ***
50 1004 TerribleName
60 1001 BlahName
带***的行是我要提取的行。我试图回答以下问题
SELECT *
FROM myTable
WHERE ID IN (10,14,28,40) AND rID IN (1001,1002,1003)
但这也返回了对[101001]、[141001]和[281002]。您可以在中对元组使用
:
select t.*
from mytable t
where (id, rid) in ( (10, 1001), (14, 1003), (28, 1001), (40, 1002) );
您还可以使用显式比较来表示这一点:
select t.*
from mytable t
where (id = 10 and rid = 1001) or
(id = 14 and rid = 1003) or
(id = 28 and rid = 1001) or
(id = 40 and rid = 1002);
您可以在
中对元组使用:
select t.*
from mytable t
where (id, rid) in ( (10, 1001), (14, 1003), (28, 1001), (40, 1002) );
您还可以使用显式比较来表示这一点:
select t.*
from mytable t
where (id = 10 and rid = 1001) or
(id = 14 and rid = 1003) or
(id = 28 and rid = 1001) or
(id = 40 and rid = 1002);
@rolinger注意到MySQL似乎并没有对这一点进行非常好的优化well@Gordon林诺夫-很好!谢谢……我不知道你能做到。这个名字叫做tuples
?嗯…@rolinger注意到MySQL似乎并没有对此进行非常好的优化well@Gordon林诺夫-很好!谢谢……我不知道你能做到。这个名字叫做tuples
?呵呵。。。