gpt4 book ai didi

mysql - 使用 SQL ORDER 动态工作

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

我正在使用 PHP 进行 SQL 查询,并认为查询结果比使用 PHP 计算结果要容易得多。

这是我的演示表:

ID | m1 | m2 | m3 | result
1 | 1 | 2 | 3 | 6
2 | 2 | 3 | 1 | 6
3 | 4 | 8 | 4 | 16
4 | 4 | 5 | 7 | 16

我想实现的是根据结果对它们进行排序,如果它们相同,则 (m1,m2,m3) 的最小值,如果相同则消除最小值并继续,如果碰巧所有值都相同,则按 ID 排序。

例如基于我的表:

SELECT * FROM demotable ORDER BY result,min(m1,m2,m3) --And no more ideas..

结果应按如下顺序排列:

ID | m1 | m2 | m3 | result
1 | 1 | 2 | 3 | 6
2 | 2 | 3 | 1 | 6
4 | 4 | 5 | 7 | 16
3 | 4 | 8 | 4 | 16

所以首先它检查结果 并发现 6 和 6 相同。之后,它取 (m1,m2,m3) 的最小值,结果也是一样的。首先,它删除 m1(因为它是最小值),然后它删除 m3(因为它是最小值)。然后 min(m2,m3) & min(m1,m2) 也是一样的。现在只有一个字段可以比较,因为“巧合”,它们也相同,现在按 ID 排序。

在表格的底部,我们也有匹配的 resultmin(m1,m2,m3) 是相同的。当 m1 被消除时(两者都最低)min(m2,m3) 给出不同的值,因此 ID 4 的元素高于ID 3 的元素。

用 SQL 做类似的事情是否可行或可能,还是我应该只将所有数据选择到数组中并用 PHP 进行计算?

根据 Giorgios 的回答进行编辑:

如果我有数据:

ID | m1 | m2 | m3 | result
1 | 4 | 4 | 2 | 10
2 | 2 | 2 | 6 | 10

然后返回的 ID 1 最好不是 ID 2,但它应该是 ID2。

最佳答案

可能是你用的最少而不是 min

  SELECT * FROM demotable ORDER BY result, least(m1,m2,m3)

关于mysql - 使用 SQL ORDER 动态工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45072770/

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