这个SQL语句包含什么,包括' WHERE(1)= [condition]'意思?

时间:2015-10-26 23:50:51

标签: sql

我正在阅读一些SQL概念并遇到了这个例子:

SELECT *
FROM Employee Emp1
WHERE (1) = (
    SELECT COUNT(DISTINCT(Emp2.Salary))
    FROM Employee Emp2
    WHERE Emp2.Salary > Emp1.Salary
)

这个脚本做什么用?

困扰我的线条:
1) WHERE (1)
这意味着&{39; WHERE以下查询为TRUE',但为什么需要这样做?

2) WHERE Emp2.Salary > Emp1.Salary 返回工资高于其自身的行......?

2 个答案:

答案 0 :(得分:0)

该脚本返回所有员工行,其中只有一名员工获得更多收入。

答案 1 :(得分:0)

我在下面附上我的答案,以回应你的“混乱线条”。

1)'WHERE(1)' 这意味着'以下查询的位置为TRUE',但为什么需要这样做?

[答案] 当您的内部select语句返回1时,会满足此WHERE条件,因为它评估1 = 1,实际上意味着WHERE TRUE

2)'在哪里Emp2.Salary> Emp1.Salary 返回工资高于其自身的行......?

[答案] 此条件是对整个Employee表进行的比较。

考虑以下Employee表的示例数据:

Salary
------
222.55
333.66

第一个SELECT语句将获取这两个行,然后第二个查询将获取高于当前比较的工资(对于每个)。这意味着它在333.66函数中有一个值COUNT(),并且只有一个薪水高于222.55,因为333.66 is not higher than 333.66 - 所以这一行从结果中被丢弃