如何在嵌套查询中使用null子句工作?

时间:2012-05-03 17:09:58

标签: sql

根据sql server,Null不等同于sql中的任何东西,但是后面的查询会返回已经下订单的所有产品。

Select * from products 
where exists (select null from orderdetails 
where orderdetails.product_id = products.product_id

5 个答案:

答案 0 :(得分:3)

Exists测试是否存在行。它不检查值。您可以使用where exists (select * ...)where exists(select 1 ...)。这没有什么区别。

答案 1 :(得分:2)

Exists测试以查看包含的语句是否返回任何行。

我们将逐步实现这一目标。


select null from orderdetails 
where orderdetails.product_id = products.product_id

为orderdetails表中的每个订单返回一行包含null的行,并附带给定的product_id。


exists (select null from orderdetails 
where orderdetails.product_id = products.product_id)

如果子查询返回任何行,则返回true(如果表中包含该product_id的订单,我们将包含包含null的行)


Select * from products 
where exists (select null from orderdetails 
where orderdetails.product_id = products.product_id)

返回orderdetail表中存在任何订单的每个产品。

答案 2 :(得分:1)

exists子句检查是否存在:子查询是否返回任何数据。它不担心数据本身。

如果子查询返回任何,则

exists为真。

答案 3 :(得分:1)

  

存在如果子查询包含任何行,则返回TRUE。

你正在做的是选择Null;这将返回一行null,因此条件将为真

答案 4 :(得分:0)

尝试选择id,主键,而不是select null