这是我正在运行的MySQL查询:
-- get the sid of every supplier who does not supply both a red and green part
SELECT Suppliers.sid, Parts.color
FROM Suppliers
JOIN Catalog ON Catalog.sid = Suppliers.sid
JOIN Parts ON Parts.pid = Catalog.pid
WHERE Suppliers.sid NOT IN (
SELECT Suppliers.sid
FROM Suppliers
JOIN Catalog ON Catalog.sid = Suppliers.sid
JOIN Parts ON Parts.pid = Catalog.pid
WHERE Parts.color IN ('red', 'green')
GROUP BY Suppliers.sid
HAVING COUNT(DISTINCT Parts.color) = 2
)
ORDER BY Suppliers.sid DESC;
Run Code Online (Sandbox Code Playgroud)
如您所见,重复两次:
FROM Suppliers
JOIN Catalog ON Catalog.sid = Suppliers.sid
JOIN Parts ON Parts.pid = Catalog.pid
Run Code Online (Sandbox Code Playgroud)
我该怎么做只宣告一次,并引用它两次?或者这是否表明我的整个查询都存在缺陷?
当我有15个不同的查询我正在使用相同的三行运行时,问题就更加严重了.
| 归档时间: |
|
| 查看次数: |
326 次 |
| 最近记录: |