使用And运算符和Or运算符SQL的内部联接

使用And运算符和Or运算符SQL的内部联接,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我正在寻找一个具有两个运算符条件的查询,比如说,我现在在表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和a.si

我正在寻找一个具有两个运算符条件的查询,比如说,我现在在表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和a.site=b.site)或(a.cid=b.cid和a.sit=b.site)

请帮帮我…

这个怎么样

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
这个怎么样

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

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

a.d=b.id or a.cid=b.cid
假设a.d指的是a.id,那么您正试图连接两个表的id。我宁愿为您解释SQL内部联接,然后您可以尝试使用它

SQL server中有3种类型的联接:内部联接、外部联接和两者(完全联接)。我想你需要内在的结合

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

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

请确保您了解,如果任一表中存在重复记录,则联接将返回重复记录。

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

a.d=b.id or a.cid=b.cid
假设a.d指的是a.id,那么您正试图连接两个表的id。我宁愿为您解释SQL内部联接,然后您可以尝试使用它

SQL server中有3种类型的联接:内部联接、外部联接和两者(完全联接)。我想你需要内在的结合

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

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

请确保您了解,如果任一表中存在重复记录,则联接将返回重复记录。

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

 Select * From tableb b 
 Where exists
    (Select * From tablea
     Where site = b.site
        And (id = b.id or 
             cid = b.cid))

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

 Select * From tableb b 
 Where exists
    (Select * From tablea
     Where site = b.site
        And (id = b.id or 
             cid = b.cid))

这是我尝试过的,从表1中选择a*作为内部联接表2作为b on(a.id=b.id和a.site=b.site)或(a.cid=b.cid和a.sit=b.site)这是我尝试过的,从表1中选择a*作为内部联接表2作为b on(a.id=b.id和a.site=b.site)或(a.cid=b.cid和a.site=b.site)Charles,这似乎是正确的,但我想要一列来自表a和表B的结果查尔斯,这似乎是正确的,但我想要一列来自表a和表B的结果。。