我正在寻找一个有两个运算符条件的查询,比方说,我现在在表a和表中有3列,我希望看到结果好像(a.id = b.id或a.cid = b .cid)和(a.site = b.site)
表a
ID|CID|SITE
1| 2 |sss
2| 3 |ddd
3| 4 |ddd
表b
ID|CID|SITE
1| 2 |sss
3| 3 |ddd
3| 5 |sss
现在结果应该显示,
ID|CID|SITE
1| 2 |sss
3| 3 |ddd
这意味着如果(a.id = b.id AND a.site = b.site)或(a.cid = b.cid AND a.sit = b.site)
请帮帮我......
答案 0 :(得分:3)
虽然您没有指定从哪个表中获取结果,但您的示例输出表明您要从表b中获取它,因此:
Select * From tableb b
Where exists
(Select * From tablea
Where site = b.site
And (id = b.id or
cid = b.cid))
答案 1 :(得分:1)
这个怎么样?
SELECT a.id,a.cid,a.site
FROM a
JOIN b ON a.id=b.id AND a.site=b.site
UNION ALL
SELECT a.id,a.cid,a.site
FROM a
JOIN b ON a.cid=b.cid AND a.site=b.site
或者也许这个?
SELECT a.id, a.cid, a.site
FROM a JOIN b on a.site=b.site
WHERE a.id=b.id OR a.cid=b.cid
答案 2 :(得分:0)
我不确定我是否理解你的问题,你的意思是:
a.d=b.id or a.cid=b.cid
假设你用a.d表示a.id然后你试图加入两个表的ID。我宁愿为你解释SQL内部联接,然后你可以尝试使用它。
SQL Server中有3种类型的连接,内部,外部和两者(完整)。我认为你需要内联。
Inner Join为表A中的每条记录返回表B中的所有匹配记录。
SELECT * FROM TABLEA ta INNER JOIN TABLEB tb on tb.ID = ta.ID
确保您了解如果任一表中存在重复记录,则联接将返回重复记录。