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