实在不明白

红皮猴 2005-10-26 04:02:49
select a.* from aa as a,bb as b where a.name=b.name
select * from aa where name in (select name from bb)
怎么两个查出来的结果不一样呢?
...全文
75 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
vivianfdlpw 2005-10-26
  • 打赏
  • 举报
回复
当 SET ANSI_NULLS 为 OFF 时,等于 (=) 和不等于 (<>) 比较运算符不遵从 SQL-92 标准。使用 WHERE column_name = NULL 的 SELECT 语句返回 column_name 中含有空值的行。使用 WHERE column_name <> NULL 的 SELECT 语句返回列中含有非空值的行。此外,使用 WHERE column_name <> XYZ_value 的 SELECT 语句返回所有非 XYZ 值和非 NULL的行
vivianfdlpw 2005-10-26
  • 打赏
  • 举报
回复
如果set ansi_nulls为off ,那么in操作会选取null列
下面两个结果集一样:

set ansi_nulls on
select a.* from aa as a,bb as b where a.name=b.name
select * from aa where name in (select name from bb)
lizhaogui 2005-10-26
  • 打赏
  • 举报
回复
应该一样吧,可能是空值在搞鬼?
冷箫轻笛 2005-10-26
  • 打赏
  • 举报
回复
有何不一样?

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧