使用自连接操作转换SQL Intersect查询

时间:2018-07-02 12:33:53

标签: sql join

我想将交集查询转换为自联接查询,但无法执行此操作。我没有得到正确的输出。以下是我的相交查询

SELECT id,Name FROM AJOT WHERE MARY =1 
INTERSECT
SELECT id,Name FROM AJOT WHERE MARY =10 

我的Self JOIN查询如下:

Select a.id,b.Name
FROM AJOT a join AJOT b 
on a.MARY=1 AND b.MARY=10

2 个答案:

答案 0 :(得分:1)

您需要加入所有子集都应具有的所有属性,并明确使用DISTINCT来消除重复项。

SELECT DISTINCT
       a.id,
       b.name
       FROM ajot a
            INNER JOIN ajot b 
                       ON a.id = b.id
                          AND a.name = b.name
       WHERE a.mary = 1
             AND b.mary = 10;

答案 1 :(得分:0)

一种方法使用聚合:

SELECT Name
FROM AJOT
WHERE MARY IN (1, 10)
GROUP BY Name
HAVING COUNT(*) = 2;  -- Assumes not duplicates

我假设id在行中是唯一的。如果它与name关联,则将其包括在SELECTGROUP BY中。