MySQL 条件查询进阶
背景
假如有一张表Table,有字段A、B,现在有需求如下:如果字段A为空,那么我将执行查询语句SQL1
;如果字段A不为空,那么我将执行查询语句SQL2
。
如何实现
case…when…
由于会根据某字段的内容来执行不同的SQL
语句,那么就可以使用流程条件查询。MySQL
支持的流程条件查询有if...else...
和case... when...
,这里我们选择后者。
其次,对于我们要查询的表进行一定的处理,在查询的时候新增一个临时字段temp
,针对字段A的内容分别给临时字段赋值0、1、2或其他。
最后,我们在上一步的查询结果中根据临时字段temp
来查询即可得到想要的结果。
实例实现
现在有一张表,如果字段sendSupplier_time
为空,说明这条数据没有被推送;若不为空,说明这条数据已被推送。现在,我想要查询所有未被推送的数据。
1 | SELECT * FROM |
简单分析
case…when…then…
当
sendSupplier_time
为空,给临时字段isSend
赋值0,反之赋值1。需要给括号中的查询结果给一个表名称(如上面代码的
AS a
),否则会报错。
结果
choose…when…otherwise
将条件语句包裹在<choose>
标签里,条件语句放在<when>
标签里。我们直接上一段代码
1 | <choose> |