gpt4 book ai didi

mysql select查询同一个表的多个group_concat

转载 作者:行者123 更新时间:2023-11-29 19:17:43 25 4
gpt4 key购买 nike

我目前正在开发一款小型 RPG 游戏,但遇到了一个小问题。

单位表

UnitID | Name
------ | ------
1 | Bob

装备表1

UnitID | EquipTypeID
------ | -----------
1 | 5
1 | 8

装备表2

UnitID | EquipTypeID
------ | -----------
1 | 10
1 | 12

假设现在我想对单位进行概述,列出插槽中所有可能的可装备类型,例如这样

UnitID | Name | EquipSlot1 | EquipSlot2
------ | ---- | ---------- | ----------
1 | Bob | 5, 8 | 10, 12

我知道我可以使用像 group_concat 这样的东西来......

SELECT ut.UnitID, ut.Name,
group_concat(DISTINCT et1.equipTypeID) as EquipSlot1,
group_concat(DISTINCT et2.equipTypeID) as EquipSlot2
FROM unitTable as ut
LEFT JOIN equipTable1 as et1
ON ut.UnitID = et1.UnitID
LEFT JOIN equipTable2 as et2
ON ut.UnitID = et2.UnitID

但是,我实际上在想的是,如果我可以简单地使它像这样......

装备表(将两个表与附加列组合在一起以指示插槽)

UnitID | EquipTypeID | EquipSlot
------ | ----------- | ---------
1 | 5 | 1
1 | 8 | 1
1 | 10 | 2
1 | 12 | 2

但是如果我以这种方式构建,我将如何获得相同的结果呢?

最佳答案

您可以使用 cas,因为您只想根据表更改数字

SELECT ut.UnitID, ut.Name, et1.equipTypeID,et2.equipTypeID
Case
when et1.equipTypeID then 1
when et2.equipTypeID then 2
end AS EquipSlot
FROM unitTable as ut

LEFT JOIN equiptTable1 as et1
ON ut.UnitID = et1.UnitID
LEFT JOIN equiptTable2 as et2
ON ut.UnitID = et2.UnitID

再次组合您的表用例

SELECT ut.UnitID, ut.Name, ut.equipTypeID, ut.EquipSlot 
Case when ut.ut.EquipSlot = 1 then group_concat(ut.equipTypeID) end as EquipSlot1
Case when ut.ut.EquipSlot = 2 then group_concat(ut.equipTypeID) end as EquipSlot2
FROM unitTable as ut

关于mysql select查询同一个表的多个group_concat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42617239/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com