在SQL中将表与自己比较?

时间:2018-10-20 22:40:07

标签: sql

以下查询的输出是:

查询:

SELECT CategoryID
FROM Categories
WHERE EXISTS (SELECT CategoryID FROM Categories as c WHERE c.CategoryID < Categories.CategoryID);

输出:

2
3
4

表类别:

CategoryID  CategoryName
1           Beverages
2           Condiments
3           Confections
4           Dairy Products

我想跟踪子查询(SELECT CategoryID FROM Categories as c WHERE c.CategoryID < Categories.CategoryID)。记录是否一一比较?为什么ID 1不会出现在输出中?

1 个答案:

答案 0 :(得分:1)

EXISTS用于子查询中任何记录的存在。

使用SELECT CategoryID FROM Categories as c WHERE c.CategoryID < Categories.CategoryID

没有匹配CategoryID = 1中的任何行

如果您想获得CategoryID = 1

尝试使用

c.CategoryID <= Categories.CategoryID

代替

c.CategoryID < Categories.CategoryID

包含CategoryID = 1行。