如何确定记录是否是notin的一部分,而不是不存在?

1cosmwyk  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(291)

重新措辞原来的帖子。
如何使用以下查询或类似查询:

select * from table where name="Jack" AND ID NOT IN (1,2,3,4,5) ;

要确定以下两者之间的差异: Jack 已找到记录,但其id存在于(1,2,3,4,5)中,因此未返回任何内容
而且,没有 Jack 找到了记录,所以什么也没回来
有没有可能用if语句或类似的东西…或者有没有更好的方法?

0tdrvxhp

0tdrvxhp1#

我的建议是:通过一个查询来获取状态(“匹配”,“找到了杰克,但id错误”,“找不到杰克”)和匹配(如果有):

select s.status, t.*
from
(
  select
    case 
      when sum(name = 'Jack' and id not in (1,2,3,4,5)) then 'MATCH'
      when sum(name = 'Jack') then 'WRONG ID'
      else 'NO JACK'
    end as status
  from t
) s
left join t on t.name = 'Jack' and t.id not in (1,2,3,4,5);

演示:https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=02733107f41bc51600a422f2911c6f6b

相关问题