好的,希望有人对此有一个优雅的解决方案。我一直在做两个查询,并认为它可以在一个查询中完成。
样本数据:
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...等子查询”
不必通过 PHP 整理重复结果(我使用的是 array_diff)也很好,另外它还可以在 URL 路由中进行非好的分页修复(偏移量减 2 等)。
此外,如果这是实现此内存/速度/其他方面的最佳方式,也请随意说!(虽然我怀疑它是)。
谢谢!