-1
想象一下,我有一张关于一个人的信息表(每人一行)可以称之为TableA
,现在我想例如让所有有债务的人TableB
并且还可以通过支付每月月费TableC
。如何将2条SQL语句合并为一条语句
现在已经通过这个两个命令做的是简单的,简单的:
SELECT *
FROM TableA
WHERE ID IN (SELECT ID
FROM TABLEB
WHERE Header1=false);
SELECT *
FROM TableA
WHERE ID IN (SELECT ID
FROM TABLEC
WHERE Header2=false);
但我不想让2个独立的命令返回2个独立的数据表,是不是可以将它们连接在一起相反,并得到它全部合并下来没有重复?例如:
SELECT *
FROM TableA
WHERE ID IN (SELECT ID
FROM TABLEB
WHERE Header1=false
AND
SELECT ID
FROM TABLEC
WHERE Header2=false);
如果这是可能的,那么正确的语法是什么?
你好,我不认为工会都是answear,因为我会从我的理解中得到重复的结果。示例返回结果= 1,2,3,1,1,3,3.简单地说UNION是防止这种情况发生的替代方法吗? –
好吧,'union'本身会丢弃任何重复的值,但'in(...)'不会测试列表中的多个等号。如果“in(...)'列表中的任何值都匹配,则认为连接成功。在列表中有两个'2' ids不会产生两个不同的连接。 'in(...)'只是一个很好的书写方式'where field = val1 or field = val2 or field = val3 etc ...' –