2014-10-09 46 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