查找所选列每一行的最小值

查找所选列每一行的最小值

作为查询的结果,我想获得所有行(驱动程序),并按获胜最多的驱动程序的顺序排列。
如果驾驶员至少赢得了一次或多次4次钉球,但至少一次没有赢得剩余的赛道,则他的系列数为0。

驱动表

ID|Name| .........

1   A
2   B
3   C
4   D


轨道表

TID |FK|Track1_Wins|Track2_Wins| Track3_Wins|Track4_Wins|Track5_Wins|

1     1   5           6            3           2           4

2     2   2           4            0           5           3

3     3   6           3            9           4           7

4     4   5           8            2           4           1


我的代码示例

SELECT `Drivers`.`Name`, LEAST(`Track1_Wins`, `Track2_Wins`, `Track3_Wins`, `Track4_Wins`, `TRACK5_Wins`) AS Series
FROM `Drivers`, `Tracks`
ORDER BY Series DESC;


偶然地,当我将WHERE与驱动程序ID一起使用时,得到了部分预期的输出

SELECT `Drivers`.`Name`, LEAST(`Track1_Wins`, `Track2_Wins`, `Track3_Wins`, `Track4_Wins`, `TRACK5_Wins`) AS Series FROM `Drivers`, `Tracks` WHERE `Drivers`.`ID` = 2 ORDER BY Series DESC;


它将给出预期的结果,但驱动程序名称与预期的相同

B 3

B 2

B 1

B 0


我的预期输出是

Name | Series

C           3

A           2

D           1

B           0

最佳答案

运行这个

SELECT d.`Name`,
  LEAST(`Track1_Wins`, `Track2_Wins`, `Track3_Wins`, `Track4_Wins`, `TRACK5_Wins`) AS Series
FROM `Drivers` d  INNER JOIN `Tracks` t
ON t.`FK` = d.`ID`
ORDER BY Series DESC;


这将返回与FK关联的用户名。另外,尝试对所有列和表名使用kebab_case和小写。使运行代码更加容易

关于mysql - 查找所选列每一行的最小值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58146823/

10-11 02:01