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