【发布时间】:2016-05-16 12:36:21
【问题描述】:
员工
===========================
| Employee ID | Salary |
===========================
| 3 | 200 |
| 4 | 800 |
| 7 | 450 |
============================
查询:
SELECT *
FROM Employee Emp1
WHERE (1) = ( --Line1
SELECT COUNT(DISTINCT(Emp2.Salary))
FROM Employee Emp2
WHERE Emp2.Salary > Emp1.Salary)
上面的查询输出“Employee”表的第二高薪水。 Line1 是如何工作的?我对语法类型不熟悉:
WHERE (1) =
【问题讨论】:
-
如果第二次选择的结果等于 1,那么您从 Employee Emp1 获得所有记录,否则不等于 1,那么您不会获得任何数据
-
它只是倒退了——就像说
Where (Select Count(blah) ...) = 1)写它的人可能也写Right Joins一样。 -
这没什么特别的。大括号可以是omnited。
标签: sql