我们如何在mysql中实现交集和并集?
因此,我试图找到供应红色部件和绿色部件的供应商的小岛屿发展中国家 下面是SQL查询我们如何在mysql中实现交集和并集?,mysql,sql,database,database-design,Mysql,Sql,Database,Database Design,因此,我试图找到供应红色部件和绿色部件的供应商的小岛屿发展中国家 下面是SQL查询 SELECT DISTINCT C.sid FROM Catalog C, Parts P WHERE C.pid = P.pid AND P.color = 'red' INTERSECT ( SELECT DISTINCT C.sid FROM Catalog C1,Parts P1 WHERE C1.pid = P1.pid AND P1.color = 'green' ); 但是
SELECT DISTINCT C.sid
FROM Catalog C, Parts P
WHERE C.pid = P.pid AND P.color = 'red'
INTERSECT
( SELECT DISTINCT C.sid
FROM Catalog C1,Parts P1
WHERE C1.pid = P1.pid AND P1.color = 'green'
);
但是我很难在mysql中实现它,任何建议都可以使用两个派生表:
select
t1.sid
from
(SELECT DISTINCT C.sid FROM Catalog C, Parts P WHERE C.pid = P.pid AND P.color = 'red') t1
inner join
(SELECT DISTINCT C.sid FROM Catalog C,Parts P WHERE C.pid = P.pid AND P.color = 'green') T2
on t1.sid = t2.sid
(我刚刚把它拼凑起来,但至少应该很接近)为什么要这么复杂?试试这个,希望这个能满足你的需要
SELECT DISTINCT C.sid
FROM Catalog C, Parts P
WHERE C.pid = P.pid AND P.color = 'red' AND P.color = 'green'
这将使您加入这两个表,并选择颜色为红色和绿色的行。您希望应用的一种相交操作
就概念而言,我建议(或我所知道的)UNION
和INTERSECTION
应在处理不同的表时应用。不应在同一张手术台上进行操作
假设您有两个表A
和B
,那么您可以不在同一个表上应用UNION
和INTERSECTION
。也就是说,如果查询的是同一个表A
,并且在同一列上,则可以选择和或运算符
记下上面的内容,您可以通过执行和来实现这一点,如果您想了解MySQL的联合和交集,请阅读