sql server的一个BUG?

今天写SQL SERVER的时候,发现一个BUG,贴出来大家讨论一下。  

 select distinct a.plant,b.material 
     from ezform a with(nolock) 
        left join  EZFORM_PackingList_Item b with(nolock) on a.EZNo=b.EZNO 
    where PackingNo in (select PackingNo from JO_PackingList
         where JONo in (select JONo from jo where  BookingDate>'2024-01-01'))

逻辑很简单: 需要抓取A表中的资料,必须在B表中的活动时间在某个时间点之后。

但是当初设计表的时候多人同时工作,设计比较混乱,关键的字PackingNo在不同的表取名不一样,在JO_packingList里面取名为packingListNo,而在ezform_packingList_item中取名为packingNo。这样单独执行 in 里面的语句(select PackingNo from JO_PackingList  where JONo in (select JONo from jo where BookingDate>'2024-01-01') ) 是会报错。但整个语句执行下来是不报错的,只是Packing in 这个条件完全没起作用,2024-01-01之前的数据也会拿出来。

特记录,后面自己写SQL要仔细,in里面的字段有时候会不检查的。

 

posted @ 2025-12-23 11:23  老飞飞  阅读(4)  评论(0)    收藏  举报