我對SQL中的IF條件有一些疑問 是否可以在SQL查詢中使用下一個語法?我真的有趣的有關聲明SQL IF條件如果GROUP BY語句
"SELECT * FROM TABLE WHERE... IF(order_id !=0, GROUP BY order_id, GROUP BY other_field)"
我對SQL中的IF條件有一些疑問 是否可以在SQL查詢中使用下一個語法?我真的有趣的有關聲明SQL IF條件如果GROUP BY語句
"SELECT * FROM TABLE WHERE... IF(order_id !=0, GROUP BY order_id, GROUP BY other_field)"
SELECT *
FROM TABLE
GROUP BY case when order_id <> 0
then order_id
else other_field
end
謝謝!這工程exelent! – volodymyr3131 2015-02-23 13:28:18
一組if條件,你不應該用group by
做select *
。在大多數數據庫中,查詢(通常)會被語法錯誤拒絕。
二,SQL標準是case
。
也許你想是這樣的:
select (case when order_id != 0 then order_id end) as order_id,
(case when order_id = 0 then other_field end) as other_field,
count(*)
from table t
group by (case when order_id != 0 then order_id end),
(case when order_id = 0 then other_field end);
請注意,我的邏輯分成兩個case
聲明。如果字段的類型不一樣,這就更容易了 - 您不必處理諸如如何從一種類型轉換爲另一種類型的事情。
您可以使用CASE語句。像這樣的東西 -
SELECT *
FROM TABLE
WHERE...
GROUP BY CASE WHEN order_id !=0 THEN order_id
ELSE other_field END;
哪個DBMS?什麼是order_id,列或參數? (根據ANSI SQL,只有列名可以在GROUP BY子句中列出。) – jarlh 2015-02-23 13:01:35