Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SQL中将表与itrself进行比较?_Sql - Fatal编程技术网

在SQL中将表与itrself进行比较?

在SQL中将表与itrself进行比较?,sql,Sql,以下查询的输出为: 查询: SELECT CategoryID FROM Categories WHERE EXISTS (SELECT CategoryID FROM Categories as c WHERE c.CategoryID < Categories.CategoryID); 表格类别: CategoryID CategoryName 1 Beverages 2 Condiments 3 Confections

以下查询的输出为:

查询:

SELECT CategoryID
FROM Categories
WHERE EXISTS (SELECT CategoryID FROM Categories as c WHERE c.CategoryID < Categories.CategoryID);
表格类别:

CategoryID  CategoryName
1           Beverages
2           Condiments
3           Confections
4           Dairy Products
我想跟踪子查询,从类别中选择CategoryID作为c,其中c.CategoryIDEXISTS用于表示子查询中是否存在任何记录

使用“从类别中选择CategoryID作为c”时,其中c.CategoryID CategoryID=1中没有匹配的行

如果要获得CategoryID=1

尝试使用

c.CategoryID <= Categories.CategoryID
而不是

c.CategoryID < Categories.CategoryID

包含CategoryID=1行。

想象在第一个查询上有一个循环,它对每个记录执行子查询,并检查它是否返回任何与现有记录相同的记录。因此,对于CategoryID=1,它会从CategoryID<1的类别中选择CategoryID,因为没有此类记录,存在检查失败,并且不会返回该输入行。当对categoryID=2再次执行此操作时,子查询会找到一条记录,因此EXISTS检查成功。谢谢。我明白了。
c.CategoryID < Categories.CategoryID