回 帖 发 新 帖 刷新版面

主题:求助SQL查询问题

环境 SQL 2000
所用数据库:pubs
涉及表:authors,publishers
查询内容:查询没有出版社的州名和该州的所有作者名。

use pubs
go
select state,au_lname,au_fname
from authors
where state not in
(
    select state from authors
)
go

为什么上面的查询方法查不出来?
应该如何查询才正确?

回复列表 (共15个回复)

11 楼

select state,au_lname,au_fname
from authors
where state not in
(
    select distinct state from publishers 
    where state is not null
)

12 楼

谢谢楼上的朋友
能否解释下为什么要加“where state is not null”这句啊?

13 楼

该句是为了清除 Publishers 表中 state 为空(Null)的纪录。 因为当表达式与 Null 比较时, 结果不确定. 请参看以下 T-SQL 关于比较运算符(=)的说明:

Compares two expressions (a comparison operator). When you compare nonnull expressions, the result is TRUE if both operands are equal; otherwise, the result is FALSE. If either or both operands are NULL and SET ANSI_NULLS is set to ON, the result is NULL. If SET ANSI_NULLS is set to OFF, the result is FALSE if one of the operands is NULL, and TRUE if both operands are NULL.

14 楼

谢谢。。。。

15 楼

study...

我来回复

您尚未登录,请登录后再回复。点此登录或注册