gpt4 book ai didi

MySQL - PERL - 按多列排序,然后按列零件号字段排序

转载 作者:行者123 更新时间:2023-11-29 07:10:15 24 4
gpt4 key购买 nike

id|pnumber|special|limitedtime|normal
1 |765234 |1 |0 |0
2 |765235 |0 |1 |0
3 |776234 |0 |0 |1
4 |776235 |1 |0 |0
5 |785456 |0 |1 |0
6 |785457 |1 |0 |0

这是我之前发布的问题的另一种情况。

请注意,我实际上使用的是 dbi 和占位符,但只是针对我的问题使用了基础知识。

而不是三个查询:

SELECT `pnumber` from `table`
WHERE `special` > 1
ORDER BY ABS(pnumber) DESC
LIMIT $Lvar1,$Lvar2

执行与显示

SELECT `pnumber` from `table`
WHERE `limitedtime` > 1
ORDER BY ABS(pnumber) DESC
LIMIT $Lvar1,$Lvar2

执行与显示

SELECT `pnumber` from `table`
WHERE `normal` > 1
ORDER BY ABS(pnumber) DESC
LIMIT $Lvar1,$Lvar2

执行与显示

这给出了我的结果,但是 LIMIT 需要与所有三个/dependent 相关联。

所以,我想做这样的事情:

SELECT `pnumber` from `table`
ORDER BY special?? ABS(pnumber) DESC,
ORDER BY limitedtime?? ABS(pnumber) DESC,
ORDER BY normal?? ABS(pnumber) DESC
LIMIT $Lvar1,$Lvar2

我认为如果操作正确,会按照我想要的顺序给出我的结果。

765234 (special)
776235 (special)
785457 (special)
765235 (limitedtime)
785456 (limitedtime)
776234 (normal)

我使用 LIMIT $Lvar1,$Lvar2 进行分页/导航。

(该表有更多的数据结果实际上被插入数组,因为稍后在代码中对其他表进行了一些交叉引用/查询。)

这当然是一个大问题,有人可能会用简单的答案来回答!

感谢大家帮助这个菜鸟。

最佳答案

您可以只使用 union all 来合并查询的输出

SELECT `pnumber` from `table`
WHERE `special` > 1
ORDER BY ABS(pnumber) DESC
LIMIT $Lvar1,$Lvar2

UNION ALL

SELECT `pnumber` from `table`
WHERE `limitedtime` > 1
ORDER BY ABS(pnumber) DESC
LIMIT $Lvar1,$Lvar

UNION ALL

SELECT `pnumber` from `table`
WHERE `normal` > 1
ORDER BY ABS(pnumber) DESC
LIMIT $Lvar1,$Lvar

Union All 本质上是获取查询的输出并将它们连接起来。

关于MySQL - PERL - 按多列排序,然后按列零件号字段排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5029946/

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