【发布时间】:2018-06-30 05:10:06
【问题描述】:
是否可以有如下SQL形式:
SELECT
(
(SUBQUERY1) -
(SUBQUERY2)
)
假设这两个子查询是正确的。由于第一个查询中没有 FROM,因此它看起来与我有关。
谢谢!
只是大学课堂上的一个简单例子:
给定关系:
- 以
id为关键字的学生(id、gpa) - 在所有三个属性构成键的情况下注册(id、number、term)
找出参加 Class1 的学生的平均 GPA 与参加 Class2 的学生的平均 GPA 之间的差异。假设有学生参加了不止一次。
下面的 SQL 查询可以吗?
SELECT
(SELECT AVG(gpa)
FROM Students
WHERE id IN (SELECT id
FROM Enrolls
WHERE number = "CLASS1")
)
-
(SELECT AVG(gpa)
FROM Students
WHERE id IN (SELECT id
FROM Enrolls
WHERE number = "CLASS2")
)
【问题讨论】:
-
每个子查询只能返回一个字段的一行,除了表中的单个行/字段或每个 SELECT 中的 WHERE 子句可能赋予的关系之外,它们之间不会有任何关系.所以...是的,但可能有更好的方法来解决它可能用来解决的任何问题。
-
任何特定的 DBMS?已经有许多关于此主题的 SO Q&A 可能对您有所帮助,但如果您可以稍微缩小问题范围会更好,也许有一个更真实的例子。
-
这取决于数据库。有些数据库需要
from子句,有些则不需要。 -
刚刚用特定问题更新了问题。
-
在 IT 领域,与“42”一样普遍的答案是“视情况而定”。
标签: sql