我写成这两样为什么返回的结果不一样呢?

HappyCode1000 2004-05-14 11:39:07


SELECT pub_name
FROM publishers
WHERE NOT EXISTS
(SELECT *
FROM titles
WHERE pub_id = publishers.pub_id
AND type = 'business')


SELECT pub_name
FROM publishers
WHERE NOT EXISTS
(SELECT *
FROM titles t inner join publishers p on t.pub_id=p.pub_id
WHERE type = 'business')


查询语句中 not exist里的条件 我写成这两样为什么返回的结果不一样呢?
这两个难道不一样吗?

WHERE pub_id = publishers.pub_id 和 titles t inner join publishers p on t.pub_id=p.pub_id 一样呀?

...全文
32 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
LoveSQL 2004-05-14
  • 打赏
  • 举报
回复
楼上分析的有道理!
eru 2004-05-14
  • 打赏
  • 举报
回复
当然不一样
(SELECT *
FROM titles t inner join publishers p on t.pub_id=p.pub_id
WHERE type = 'business')
要么存在要么不存在,对外层查询的结果要么是全部,要么是没有

(SELECT *
FROM titles
WHERE pub_id = publishers.pub_id
AND type = 'business')
要对publishers中的每条记录进行判断
luoluo4529 2004-05-14
  • 打赏
  • 举报
回复
谁能告诉我为什么(SELECT *
FROM titles
WHERE pub_id = publishers.pub_id
AND type = 'business')
执行不了
HappyCode1000 2004-05-14
  • 打赏
  • 举报
回复
还是不是很明白,能否再详细些呢?多谢!

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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