gpt4 book ai didi

MySQL 按 X 排序,但先对 Y 中的两个进行排序

转载 作者:行者123 更新时间:2023-11-29 13:39:44 24 4
gpt4 key购买 nike

好的,希望有人能为此提供一个优雅的解决方案。我已经在两个查询中完成了这一任务,并认为它可以在一个查询中完成。

示例数据:

ID、区域、AgentID、价格
1、AZ1、15、100
2、AZ1、16、110
3、AZ2、15、180
4、AZ1、12、109
5、AZ3、15、180
6、AZ1、11、90
7、AZ2、15、140
8、AZ1、10、110
9、AZ4、11、120
10、AZ1、12、130

该查询的基本思想是,我需要从区域为 AZ1 的数据中获取所有内容 (SELECT *),并按价格降序排序。非常基本:SELECT * FROM data WHERE Area=AZ1 ORDER BY Price DESC

但是,我需要先对 AgentID=15 的两个条目进行排序。我之前已经将其作为两个查询来执行:

SELECT * FROM data WHERE Area=AZ1 AND AgentID=15 ORDER BY Price DESC LIMIT 2

SELECT * FROM data WHERE Area=AZ1 ORDER BY Price DESC

并且首先显示第一个结果。这样做并不是什么大不了的事,但为了让事情变得时尚和性感,我可以将这些结合起来吗?当我尝试子查询时,它说“此版本的 MySQL 尚不支持 LIMIT...etc 子查询”

不必通过 PHP 整理重复结果(我使用的是 array_diff)也很好,而且它可以在 URL 路由中修复不太好的分页(偏移量负 2 等)。

此外,如果这是实现内存/速度/任何方面的最佳方法,也请随意说出来! (尽管我对此表示怀疑)。

谢谢!

最佳答案

您可以使用union all来做到这一点:

select t.*
from ((SELECT *, ord = 1 FROM data WHERE Area=AZ1 AND AgentID=15 ORDER BY Price DESC LIMIT 2)
union all
(SELECT *, ord = 2 FROM data WHERE Area=AZ1 )
) t
order by ord, price desc

关于MySQL 按 X 排序,但先对 Y 中的两个进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18237956/

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