需求:在查询到数据时返回数据,查询不到数据时,返回默认值
# 需要获取到t_order_status reject_code所有的值,但是也可能无数据
select distinct reject_code from t_order_status;
+-------------+
| reject_code |
+-------------+
| 22 |
| 46 |
| 2 |
+-------------+
3 rows in set
# 使用ifnull
select IFNULL(select distinct reject_code from t_order_status,0)
# 如果结果只有一条数据那不会报错,否则就会报错:
# ERROR 1242 (21000): Subquery returns more than 1 row
# 解决上一步的问题:
select IFNULL(select GROUP_CONCAT(distinct reject_code) from t_order_status,0)
+-------------+
| reject_code |
+-------------+
| 22,46,2 |
+-------------+
1 rows in set
# 如果没查到数据则返回0(可以设置)
+-------------+
| reject_code |
+-------------+
| 0 |
+-------------+