突然发现 where 子句可以使用 case when,一个震惊,发现新大陆!?居然可以这么使用。
震惊之余,沉思细想,其实只是自己没这么使用过而已。固有的思维限制了想象的空间,影响到了认识的层次。谁说了 mysql where 子句中不能使用 case when,可是自己又是否清楚 where 子句中该怎么使用?都知道 mysql 官方网站写得一清二楚,SQL 标准罗列的明明白白,可是呢,然并卵,收藏夹里吃灰而已。人之所以不成才,不是因为没有路可走,而是有路不愿走。大家只是做着常人所做的事,却梦想这非常人的成功,最终谁又会是那个唯一的例外呢?
不要感慨,唏嘘,行动才是最大。mysql where 子句允许使用函数的。case when 也只不过是一种特殊的函数,既然 where 子句可以使用 isnull,为什么不能使用 case when 呢。

小结:

mysql where case when

  1. -- 粘贴而来 https://blog.csdn.net/qq_27686779/article/details/80318252
  2. select *
  3. from A, B
  4. where
  5. CASE
  6. when A.id = 0 then B.name in ('aaa', 'bbb')
  7. when A.id = 1 then B.name in ('bbb', 'ccc')
  8. when A.id = 2 then B.name in ('ccc', 'ddd')
  9. END;
  10. select *
  11. from A, B
  12. where B.name =
  13. CASE
  14. when A.id = 0 then 'aaa'
  15. when A.id = 1 then 'bbb'
  16. when A.id = 2 then 'ccc'
  17. END

大胆使用,法不禁止,则可略试一二,语法为禁止,就可以使用。多看看官网,看看实现原理。