2014-10-09 3 views
1

У меня есть этот запрос:SQL Group By Column Без одного значения

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

ответ

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