在我的项目中我想执行这种类型的查询,但它返回错误,所以请帮助我。我想要执行这种类型的查询。
SELECT
*
FROM
company_details
WHERE
com_id NOT IN (SELECT com_id FROM com_size)
OR (SELECT com_id FROM com_cat)
上面的查询返回错误,我希望com_id在company_details中但不在com_size或com_cat表中。我也尝试这个。
SELECT
*
FROM
company_details
LEFT JOIN com_size ON com_size.com_id != company_details.com_id
LEFT JOIN com_cat ON com_cat.com_id != company_details.com_id
答案 0 :(得分:1)
试试这个:
select * from company_details
where
com_id not in (select com_id from com_size) AND
com_id not in (select com_id from com_cat)
答案 1 :(得分:1)
注意:您应该使用not exists
而不是not in
:
select cd.*
from company_details cd
where not exists (select 1 from com_size cs where cs.com_id = cd.com_id) and
not exists (select 1 from com_cat cc where cc.com_id = cd.com_id);
not exists
更好的原因在于它如何处理子查询中的NULL
值:如果任何值为NULL
,则所有比较都会失败(" false"或NULL
)。
作为额外的奖励,not exists
在MySQL中通常更快。