MySQL组仅受条件限制

时间:2017-10-03 21:06:35

标签: mysql

我很难找到能否做到这一点。 因此,从一个表中,我只想在w.type为'object'的情况下使用GROUP BY,而不必对另一个对象进行分组。

SELECT COUNT(*) as number, w.name, w.type
FROM storage AS s
LEFT JOIN weapon AS w ON w.id=s.weapon_id
WHERE s.owner_id = 'ID'
GROUP BY s.name
ORDER BY w.type

正如您所看到的,这个查询组由一切。

组成

我尝试使用UNION,但它似乎受到了损害,因为双重查询在同一个表上。我找了Case,但我不确定如何使用它。

感谢阅读!

编辑: 这是为了在游戏中显示库存。每个武器扣具都是独一无二的,但你可以使用相同的w.name来制造几种不同的武器。 对象没有这个约束,我需要它们分组并向玩家显示相同项目的编号。

玩家会看到这个:

玩家库存

  • 武器

钻石剑,铁剑,铁剑

  • 对象

Apple x2,Pear x3,Egg x1

1 个答案:

答案 0 :(得分:1)

你提到你已经尝试过UNION,但除非我只是厌倦了并且遗失了某些东西,否则这不起作用?

SELECT COUNT(*) as number, w.name, w.type 
FROM storage AS s 
LEFT JOIN weapon AS w ON w.id=s.weapon_id 
WHERE s.owner_id = 'ID' AND w.type = 'Object' 
GROUP BY s.name 
UNION
SELECT 1 as number, w.name, w.type 
FROM storage AS s 
LEFT JOIN weapon AS w ON w.id=s.weapon_id 
WHERE s.owner_id = 'ID' AND w.type != 'Object' 
GROUP BY w.id
ORDER BY w.type

在第二个选择中,group by将是一个唯一标识符 - 我假设名称和类型就足够了,但是我在没有看到数据的情况下盲目拍摄