0

我正在寻找一个具有两个运算符条件的查询,比如说,我现在在表 a 和表中有 3 列,我希望看到结果就像(a.id=b.id 或 a.cid=b.cid)和 (a.site=b.site)

表一

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)

请帮帮我...

4

3 回答 3

3

尽管您没有指定从哪个表中获取结果,但您的示例输出表明您希望从表 b 中获取结果,因此:

 Select * From tableb b 
 Where exists
    (Select * From tablea
     Where site = b.site
        And (id = b.id or 
             cid = b.cid))
于 2013-06-13T17:47:30.667 回答
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
于 2013-06-13T17:44:22.623 回答
0

我不确定我是否理解您的问题,以下是什么意思:

a.d=b.id or a.cid=b.cid

假设 ad 你的意思是 a.id 那么你正试图加入两个表的 ID。我宁愿为你解释 SQL 内连接,然后你可以尝试使用它。

SQL Server 中有 3 种类型的连接,内连接、外连接和两者(完整)。我认为你需要内部加入。

内连接为表 A 中的每条记录返回表 B 中的所有匹配记录。

SELECT * FROM TABLEA ta INNER JOIN TABLEB tb on tb.ID = ta.ID

确保您了解如果任一表中有重复记录,则连接将返回重复记录。

于 2013-06-13T17:45:25.493 回答