问题背景
存在下图所示的需求
需要根据所选择的组别进行后台数据的筛选。
其实如果没有所有组的情况下 其实这个SQL很简单
select id from a_table where group = 'xx';
但是问题就在于所有组的处理,如果选择了所有组的情况下这个时候group 这个条件其实相当于就不需要了。
解决方案
上述的问题 当然如果你不嫌麻烦完全可以如果if条件写两条sql来完成,当然我们还是需要有点追求的吧。
这里就需要用到sql的IF的判断了
以下是用nodejs的mysql库进行书写
mysql.format(`select id from a_table where IF(? = '-1', 1=1, group = ?)`, [group, group]);
上述sql的意思即为 如果group为-1也就是所有组的情况下 where的条件为 1=1, 只有在选择其他组的情况下 才会有group = ?的sql.