我很难找到能否做到这一点。 因此,从一个表中,我只想在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
答案 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将是一个唯一标识符 - 我假设名称和类型就足够了,但是我在没有看到数据的情况下盲目拍摄