美好的一天,我是一名大学生,最近我们有一项任务,我们的任务是在各种问题上编写SQL命令,具体取决于需要从3个不同的表中显示的信息。以下是提供解决方案的说明和示例问题:
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'));
除此之外,我还有两个尚未解决的问题,我不知道如何解决,任何开始的想法将不胜感激。提前谢谢你们:)
为了减少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)
直接回答任务问题超出了本网站的范围;)