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

标签 mysql sql tuples row having

美好的一天,我是一名大学生,最近我们有一项作业,要求我们根据 3 个不同表中需要显示的信息,针对各种问题编写 SQL 命令。以下是说明和示例问题以及提供的解决方案:

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'));

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

Unsolved Questions

最佳答案

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

相关文章:

mysql - mysql中如何比较两个字符串

sql - 比较两个 SQL Server 数据库(架构和数据)的最佳工具是什么?

mysql - SQL 提取用户组 ID,仅包含指定的用户 ID

c++ - 通过 ENUM 查找返回元组值(不同类型)的模板函数

python - 如何将 mysql 单列列表结果直接提取到 python 列表中?

python - 将元组从小到大排序

php - 在 PHP SQL 查询中使用 'to'

php - Doctrine 中的 mysql_close() 替代方案

php - 使用 "sort"列排列 MySQL 表中的行

java - 在 javaFx 中将 Integer tableview 显示为字符串