Sql 如果没有公共列,则不存在
我有三张桌子,如下所示Sql 如果没有公共列,则不存在,sql,not-exists,Sql,Not Exists,我有三张桌子,如下所示 Table - 1: TMP (Column: PARTS) Table - 2: BOM (Column: ID - which is a primary key in table 3) Table - 3: PROD (Column1: ID - Primary key in this table, Column2: PARTS) 现在我必须从Table1中找到Table2中不存在的零件列表 我尝试了下面的查询,但是性能太差了 SELECT PARTS FROM
Table - 1: TMP (Column: PARTS)
Table - 2: BOM (Column: ID - which is a primary key in table 3)
Table - 3: PROD (Column1: ID - Primary key in this table, Column2: PARTS)
现在我必须从Table1
中找到Table2
中不存在的零件列表
我尝试了下面的查询,但是性能太差了
SELECT PARTS FROM TMP WHERE ((TMP.PARTS) NOT IN (SELECT (SELECT PARTS FROM PROD WHERE PROD.ID = BOM.ID) FROM BOM));
我尝试使用不存在
,但没有得到想要的结果。只需尝试以下方法:
SELECT PARTS
FROM TMP
WHERE PARTS NOT IN
(SELECT PARTS
FROM PROD P
JOIN BOM B ON B.ID = P.ID)
您正在查找除BOM表中显示的产品以外的所有零件
select parts from tmp
except
select parts from prod where id in (select id from bod);
(不过,并不是每个数据库管理系统都支持这个标准关键字。这就是为什么您应该总是用所涉及的数据库管理系统来标记SQL问题。我认为MySQL根本不支持
除了
。Oracle称之为减去
。大多数其他RDBMS应该支持除了
)兄弟,试试这个。使用join是一种比其他方法快得多的方法
SELECT PARTS
FROM TMP
left join BOM on
TMP.PARTS = BOM.PARTS
join PROD on
BOM.ID = PROD.ID
where BOM.ID is null
您想要哪个数据库系统?SQL Server?神谕MySQL。。。样本数据和期望的结果将非常有用。