首页 > 解决方案 > 在 SQL 中使用带有 Count 函数的减法常量

问题描述

假设有一个供应商、目录和零件的模式,我们正试图找出哪些供应商提供除一个以外的所有零件。

这是正确的查询吗?我不确定只是因为-1在最后一个 select 语句的末尾,我不确定这是否有效。

SELECT S.sid 
FROM SUPPLIER S, CATALOGUE C
WHERE S.sid = C.sid
GROUP BY S.sid
HAVING COUNT(*) = ((SELECT COUNT(*) FROM PARTS) - 1))

标签: mysqlsql

解决方案


您可以尝试以下一个 withdistinct子句:

SELECT S.sid 
  FROM SUPPLIER S
  JOIN CATALOGUE C ON S.sid = C.sid
  JOIN PARTS P ON P.id = C.parts_id  
 GROUP BY S.sid
HAVING COUNT(distinct C.parts_id) = COUNT(distinct P.parts_id) - 1

推荐阅读