Mysql 从多个表中选择所有值的组合,保留A列中任何重复项的最大值
我正在构建一个结果表,它从数据库中的多个表中提取数据,并包含一个不同的。它一直工作到我添加Case/如果满足条件,何时向结果中添加乘数 (是的,这是我正在构建的一个与神奇宝贝相关的工具,是的,我是一个彻头彻尾的男子汉) 这是我目前得到的代码:Mysql 从多个表中选择所有值的组合,保留A列中任何重复项的最大值,mysql,sql,distinct,Mysql,Sql,Distinct,我正在构建一个结果表,它从数据库中的多个表中提取数据,并包含一个不同的。它一直工作到我添加Case/如果满足条件,何时向结果中添加乘数 (是的,这是我正在构建的一个与神奇宝贝相关的工具,是的,我是一个彻头彻尾的男子汉) 这是我目前得到的代码: SELECT DISTINCT f.Name as 'Fast Move' ,(CASE WHEN Pokemon_Types_And_Moves.Primary_Type = f.Type THEN (f.
SELECT DISTINCT f.Name as 'Fast Move'
,(CASE WHEN Pokemon_Types_And_Moves.Primary_Type = f.Type
THEN (f.Damage * 1.2)
WHEN Pokemon_Types_And_Moves.Secondary_Type = f.Type
THEN (f.Damage * 1.2)
ELSE f.Damage END) as 'Damage'
,f.DPS as 'Fast Move DPS'
,c.Name as 'Charged Move'
,c.Damage as 'Charged Move Damage'
,c.DPS as 'Charged Move DPS'
,((f.Cooldown * CEIL(c.Energy_Required / f.Energy_Generated)) + c.Time) as 'Full Cycle Time'
,((f.damage * CEIL(c.Energy_Required / f.Energy_Generated)) + c.Damage) as 'Full Cycle Damage'
,ROUND(((f.damage * CEIL(c.Energy_Required / f.Energy_Generated)) + c.Damage) / ((f.Cooldown * CEIL(c.Energy_Required / f.Energy_Generated)) + c.Time), 2) as 'Full Cycle DPS'
FROM Fast_Moves f, Charged_Moves c, Pokemon_Types_And_Moves
WHERE (f.Name IN (SELECT Fast_Move_1
FROM Pokemon_Types_And_Moves
WHERE Pokemon_Name = 'Beedrill')
OR f.NAME IN (SELECT Fast_Move_2
FROM Pokemon_Types_And_Moves
WHERE Pokemon_Name = 'Beedrill')
OR f.NAME IN (SELECT Fast_Move_3
FROM Pokemon_Types_And_Moves
WHERE Pokemon_Name = 'Beedrill'))
AND (c.Name IN (SELECT Charged_Move_1
FROM Pokemon_Types_And_Moves
WHERE Pokemon_Name = 'Beedrill')
OR c.NAME IN (SELECT Charged_Move_2
FROM Pokemon_Types_And_Moves
WHERE Pokemon_Name = 'Beedrill')
OR c.NAME IN (SELECT Charged_Move_3
FROM Pokemon_Types_And_Moves
WHERE Pokemon_Name = 'Beedrill'))
ORDER BY f.Name, c.Name
它返回每一行的副本,除了一行具有“正常”损坏结果,另一行具有所需的倍增结果
我敢肯定问题在于,它在接近查询开始处的“Case”语句中返回了两行,但我就是不知道如何停止它
我试过合并MAX子句等,但到目前为止没有任何效果
目前的结果:
(由于我是新用户,目前还不允许添加图片,但结果基本上是:
Fast Move Damage Charged Move Charged Move Damage
Bug Bite 5 Aerial Ace 10
Bug Bite 6 Aerial Ace 12
然后每一个其他组合都是一样的。正如你所看到的,Beedrill正在接收1.2乘数,因此第一行是多余的。(希望这有意义!)我在这里看到,您使用了3个表,但没有连接条件。这可能是重复的原因。如果不允许任何人添加图片,这将是一个非常好的地方。也许您可以考虑将口袋妖怪类型和移动拆分为两个表-->口袋妖怪移动口袋妖怪移动类型。我觉得您是stuf在数据库表中按列输入过多信息。