可能有点糟糕的标题,但我试着解释一下我的意思.
我使用这样的SQL来构建一个列表
SELECT id
FROM parcel
WHERE id IN (113715, 113824, 113855, 113954, 114010, 114116, 114272, 114329)
Run Code Online (Sandbox Code Playgroud)
其中,ID在被隔离是唯一的,非常简单的包裹表中的列.
但有些表使用许多列是唯一的.
SELECT id1, id2
FROM trip
WHERE id1, id2 IN ((113715, 113824), (113855, 113954), (114010, 114116),(114272, 114329))
Run Code Online (Sandbox Code Playgroud)
最后一个SQL显然不起作用.
我想选择行在哪里
id1 = 113715 and id2=113824 or
id1 = 113855 and id2=113954 or
id1 = 114010 and id2=114116 or
id1 = 114272 and id2=114329
Run Code Online (Sandbox Code Playgroud)
实际上,生成的SQL可以包含500 - 1000个ID.
我应该使用什么SQL?
编辑
这是一个生成的SQL.ID来自另一台服务器上的另一个数据库,因此无法进行JOIN.
SELECT id1, id2 FROM trip
INTERSECT
select id1, id2 from (values (113715,113824),(113855,113954),(114010,114116),(114272,114329)) a(id1,id2)
Run Code Online (Sandbox Code Playgroud)
使用 INTERSECT
您可以使用值列表的连接:
SELECT id1, id2
FROM trip
INNER JOIN (VALUES (113715,113824),(113855,113954),(114010,114116),(114272,114329)) V(a, b)
ON id1 = a
AND id2 = b
Run Code Online (Sandbox Code Playgroud)