EXISIT 用法 疑惑

weixin_41098648 2018-01-19 10:00:00
Select top 100 WP.*,JS.ISRemember from JobSheet js
left join WProcess wp on wp.JobSheetNo = js.SheetNo
where isnull(ISRemember,0)=1

and Exists(Select 1 from WProcess wp
where wp.JobSheetNo=js.SheetNo
and ProcessNo=1 and wp.StationID = '01' )



为什么还能搜索到 ProcessN0不是1的结果
...全文
1120 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_41098648 2018-01-19
  • 打赏
  • 举报
回复
第一张图中第二行存在 两个都不满足存在条件的, ProcessNo=2,wp.StationID = '02',exisit 是只要满足where 条件下的任意一个就返回true 吗
二月十六 2018-01-19
  • 打赏
  • 举报
回复
因为条件是存在wp.StationID = '01'的,就是如果两条数据一个存在01一个不存在那么也都会搜索出来,试试这样
SELECT TOP 100
        WP.* ,
        JS.ISRemember
FROM    JobSheet js
        LEFT JOIN WProcess wp ON wp.JobSheetNo = js.SheetNo
WHERE   ISNULL(ISRemember, 0) = 1
        AND NOT EXISTS ( SELECT 1
                     FROM   WProcess wp
                     WHERE  wp.JobSheetNo = js.SheetNo
                            AND ProcessNo = 1
                            AND wp.StationID <> '01' )
weixin_41098648 2018-01-19
  • 打赏
  • 举报
回复
图中第二行 ProcessNo=2,wp.StationID = '02',都不满足子查询的条件,子查询应该是没有记录,不满足条件,当前记录为什么还能被输出。
zjcxc 2018-01-19
  • 打赏
  • 举报
回复
简单的说,对于 Select top 100 WP.*,JS.ISRemember from JobSheet js left join WProcess wp on wp.JobSheetNo = js.SheetNo where isnull(ISRemember,0)=1 的每条记录,执行子查询 Select 1 from WProcess wp where wp.JobSheetNo=js.SheetNo and ProcessNo=1 and wp.StationID = '01' 如果这个子查询有记录,则表示满足条件,当前记录输出,如果子查询没有记录,表示 不满足条件,当前记录丢弃

590

社区成员

发帖
与我相关
我的任务
社区描述
提出问题
其他 技术论坛(原bbs)
社区管理员
  • community_281
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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