0
的結果我有三個SQL查詢:的MySQL運行兩個SQL查詢的一個依賴於第三查詢
1) SELECT * FROM table_name_1 WHERE user = 'user1' AND sub_name = '' AND name != 'some_name';
2) SELECT * FROM table_name_1 WHERE user = 'user1' AND sub_name = '';
3) SELECT DISTINCT role FROM table_name_1 where user = 'user1';
在這裏,我可以結合這3個查詢能夠運行任何查詢1查詢2取決於對查詢結果3?
我可以先運行查詢3,並將該輸出放入一個變量中,並根據該變量中的值運行查詢1或2中的值。 但我想看看是否所有這些都可以純粹在sql中完成。
我嘗試了用IF,但得到如下的錯誤,我想這是因爲我不選擇後首先選擇任何列。但我真的不需要什麼選擇有:
mysql> SELECT IF(((select distinct role from table_name_1 where user = 'user1') = 'admin'),(SELECT name, display, good_high, critical_low, warning_low, warning_high FROM table_name_1 WHERE user = 'user1' AND sub_name = ''),(SELECT name, display, good_high, critical_low, warning_low, warning_high FROM table_name_1 WHERE user = 'user1' AND sub_name = '' AND name != 'some_name'));
ERROR 1241 (21000): Operand should contain 1 column(s)
mysql> SELECT IF(((select role from table_name_1 where user = 'user1' limit 1) = 'admin'),(SELECT name, display, good_high, critical_low, warning_low, warning_high FROM table_name_1 WHERE user = 'user1' AND sub_name = ''),(SELECT name, display, good_high, critical_low, warning_low, warning_high FROM table_name_1 WHERE user = 'user1' AND sub_name = '' AND name != 'some_name'));
ERROR 1241 (21000): Operand should contain 1 column(s)
mysql>
您是太快了! +1先生 – zedfoxus