1
我有以下MySQL查询选择两列,如果给定的条件得到满足,否则选择
mysql> SELECT COUNT(*) AS freq, column_name FROM table_name WHERE created_time >= CURDATE() GROUP BY column_name;
Empty set (0.41 sec)
在这种情况下,当结果是空的,我想为列返回0另两列这样的结果应该是这样的:
+--------+------------+
| freq | column_name|
+--------+------------+
| 0 | 0 |
+--------+------------+
我尝试以下方法,但他们没有发挥预期:
mysql> SELECT IFNULL(COUNT(*) AS freq, 0), IFNULL(column_name, 0) FROM table_name WHERE created_time >= CURDATE() GROUP BY column_name;
Empty set (0.40 sec)
mysql> SELECT IFNULL((SELECT COUNT(*), column_name FROM table_name WHERE created_time >= CURDATE() GROUP BY column_name), 'not found');
ERROR 1241 (21000): Operand should contain 1 column(s)
mysql> SELECT CASE WHEN ((SELECT COUNT(*) FROM table_name WHERE created_time >= CURDATE()) > 0)
THEN (SELECT COUNT(*) AS freq, column_name FROM table_name WHERE created_time >= CURDATE() GROUP BY column_name)
ELSE (SELECT 0,0) END;
ERROR 1241 (21000): Operand should contain 1 column(s)
mysql> SELECT IF(
(SELECT COUNT(*) FROM table_name WHERE created_time >= CURDATE()) > 0,
(SELECT COUNT(*) AS freq, column_name FROM table_name WHERE created_time >= CURDATE() GROUP BY column_name),
(SELECT 0,0)
);
ERROR 1241 (21000): Operand should contain 1 column(s)
我做错了什么?由于
您可以创建一个小提琴,这将有助于测试答案:HTTP ://sqlfiddle.com/ – kenfire