2014-10-09 47 views
1

我有這個疑問:SQL組按列沒有一個價值

SELECT *, COUNT(item.sel_item_id) AS 'Count' 
FROM item 
GROUP BY item.sel_item_table, item.sel_item_id, item.gold 

這個結果:

SEL_ITEM_TABLE SEL_ITEM_ID 
pf_gem   2 ... 
pf_gem   4 ... 
pf_gem   3 ... 
pf_weapons  4 ... 
pf_weapons  2 ... 
pf_weapons  1 ... 

我希望在pf_weapons的項目總是分開沒有GROUPBY,像這樣的:

SEL_ITEM_TABLE SEL_ITEM_ID 
pf_gem   2 ... 
pf_gem   4 ... 
pf_gem   3 ... 
pf_weapons  1 ... 
pf_weapons  1 ... 
pf_weapons  1 ... 
pf_weapons  1 ... 
pf_weapons  1 ... 
pf_weapons  1 ... 
pf_weapons  1 ... 
+0

那麼,它是返回'SEL_ITEM_ID'還是該列應該是'COUNT'? – Lamak 2014-10-09 14:19:27

回答

1

你可以排除武器,然後重新組合它們。

SELECT *, COUNT(item.sel_item_id) AS 'Count' 
FROM item 
where item.sel_item_table != 'pf_weapons' 
GROUP BY item.sel_item_table, item.sel_item_id, item.gold 
union all 
SELECT *, 1 
FROM item 
where item.sel_item_table = 'pf_weapons' 

正如@Hogan在評論中指出的那樣,UNION ALL會更有效果。

+0

@paqogomez - 'UNION ALL'會有更好的表現。 – Hogan 2014-10-09 14:44:36