创建SQL命令以从给定表中检索数据

问题描述 投票:0回答:1

美好的一天,我是一名大学生,最近我们有一项任务,我们的任务是在各种问题上编写SQL命令,具体取决于需要从3个不同的表中显示的信息。以下是提供解决方案的说明和示例问题:

Instructions + Sample Question & Solution

Given Table

以下是我的答案:

My Solved Questions Part 1

My Solved Questions Part 2

我想知道的是,如果有更多方法可以缩短我对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'));

除此之外,我还有两个尚未解决的问题,我不知道如何解决,任何开始的想法将不胜感激。提前谢谢你们:)

Unsolved Questions

mysql sql tuples row having
1个回答
0
投票

为了减少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)

直接回答任务问题超出了本网站的范围;)

© www.soinside.com 2019 - 2024. All rights reserved.