gpt4 book ai didi

mysql - SQL 中的 ORDER BY 两列

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

我有一个非常复杂的查询,用于从数据库中提取一些结果(数据库设计非常脏)。

基本上我试图按两个标准排序的最终结果:

  1. t.property
  2. l.unit_number

基本上,我希望将所有类似的 t.property 进行分组,然后将 l.unit_number 根据我预先存在的内容进行排序。

这是我的查询:

SELECT  t.name_first,
t.name_middle,
t.name_last,
t.tenant_id,
t.property,
l.unit_number
FROM tenants t
INNER JOIN (
SELECT tenant_id, property, unit_number,
max(lease_start_date) AS newest_start_date
FROM leases
GROUP BY property, unit_number
) x
ON t.tenant_id = x.tenant_id
INNER JOIN leases l
ON l.lease_start_date = x.newest_start_date
AND l.tenant_id = t.tenant_id
WHERE t.name_first != 'Pending'
AND l.termination_date IS NULL
ORDER BY l.unit_number REGEXP '^[A-Za-z]+$'
,CAST(l.unit_number as SIGNED INTEGER)
,CAST(REPLACE(l.unit_number,'-','')AS SIGNED INTEGER)
,l.unit_number
,t.property

目前,我的数据根据​​ l.unit_number 标准进行适当排序,但不是 t.property,即:

t.property      l.unit_number
4321 Test 1
1234 Test 2
5555 Test 3
4321 Test 4
1234 Test 7320-1
4321 Test 7320-2
5555 Test 7320-3
5555 Test 7320-4
1234 Test A
4321 Test B
4321 Test C
5555 Test D

理想情况下,我希望输出按 t.property 分组,然后按 l.unit_number 排序。即:

t.property      l.unit_number
1234 Test 2
1234 Test 7320-1
1234 Test A
4321 Test 1
4321 Test 4
4321 Test 7320-2
4321 Test B
5555 Test 3
5555 Test 7320-3
5555 Test 7320-4
5555 Test D

最佳答案

将 t.property 放在 ORDER BY 的开头:

ORDER BY t.property
,l.unit_number REGEXP '^[A-Za-z]+$'
,CAST(l.unit_number as SIGNED INTEGER)
,CAST(REPLACE(l.unit_number,'-','')AS SIGNED INTEGER)
,l.unit_number

关于mysql - SQL 中的 ORDER BY 两列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17372267/

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