我想将交集查询转换为自联接查询,但无法执行此操作。我没有得到正确的输出。以下是我的相交查询
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
答案 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
关联,则将其包括在SELECT
和GROUP BY
中。