gpt4 book ai didi

sql - 如何为以下查询编写没有子查询的sql

转载 作者:行者123 更新时间:2023-12-02 09:48:47 27 4
gpt4 key购买 nike

SELECT C.pid
FROM Catalog C, Suppliers S
WHERE S.sname = ‘Yosemite Sham’ AND C.sid = S.sid
AND C.cost ≥ ALL (Select C2.cost
FROM Catalog C2, Suppliers S2
WHERE S2.sname = ‘Yosemite Sham’ AND C2.sid = S2.sid)

最佳答案

首先,学习使用正确、明确的 JOIN 语法。

然后,如果您假设最大成本只出现一次,您可以这样做:

SELECT C.pid
FROM Catalog C JOIN
Suppliers S
ON C.sid = S.sid
WHERE S.sname = 'Yosemite Sham'
ORDER BY c.Cost DESC
FETCH FIRST 1 ROW ONLY ;

请注意,最后一个子句是 ANSI 标准 SQL。有些数据库使用其他方法来实现相同的功能。

如果没有这个假设,基本上所有合理的方法都使用子查询。这是一个没有的:

SELECT C.pid
FROM Catalog C JOIN
Suppliers S
ON C.sid = S.sid LEFT JOIN
Catalog C2
ON C2.sid = C.sid AND
C2.Cost > C.Cost
WHERE S.sname = 'Yosemite Sham' AND c2.Cost IS NULL
ORDER BY c.Cost DESC;

注意:这假设 sidsname 为 1-1。这是一种便利(这可能是真的),有助于避免额外加入供应商

关于sql - 如何为以下查询编写没有子查询的sql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39968664/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com