美好的一天,我是一名大学生,最近我们有一项作业,要求我们根据 3 个不同表中需要显示的信息,针对各种问题编写 SQL 命令。以下是说明和示例问题以及提供的解决方案:
Instructions + Sample Question & Solution
以下是我的回答:
我想知道是否还有其他方法可以缩短我对 7 个问题的每个答案,最好是尽可能短的代码。作为一个好奇的人,效率对我来说很重要,最好使用更短的命令。例如,我非常确定 #7 中的这段代码可以缩短:
SELECT pNo, MAX(qty), (SELECT MAX(qty) FROM sp WHERE pNo IN (SELECT pNo
FROM p WHERE pName = 'Nut' OR pName = 'Cam') ) AS MAXcamORnut
FROM sp
GROUP BY pno
HAVING MAX(qty) > ALL (SELECT qty FROM sp WHERE pNo IN(SELECT pNo FROM
p
WHERE pName = 'Nut' OR pName = 'Cam'));
除此之外,我还有两个 Unresolved 问题,我不知道如何解决,任何开始的想法将不胜感激。提前谢谢你们:)
最佳答案
为了减少 SQL 查询中的困惑,您可以尝试使用 CTE(公用表表达式)而不是子查询。
示例:
WITH cte_sel_max as (
SELECT nestID, max(eggID) as last_own_egg from nests where own_egg = TRUE group by nestID
)
select eggs.nestID,
eggs.eggID as false_egg_ID
from eggs join cte_sel_max cte
on (eggs.nestID=cte.nestID and eggID > last_own_egg)
直接回答作业问题超出了本网站的范围;)
关于mysql - 创建 SQL 命令以从给定表中检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55175228/