【发布时间】:2019-05-04 12:52:47
【问题描述】:
有 2 个表 - Person(personName, areaId,birthDate) 和 Area(areaId, areaCode)。现在我想要一个带有他们的 areaCode 的人员列表,以便将来自 areaCode 的所有人员一起列出,并且最老的人的 areaCode 应该是第一个出现的 areaCode。如何通过mysql查询实现这一点?
我尝试使用 ORDER BY 与多列是徒劳的。
SELECT P.personName, A.areaCode, P.birthDate
FROM Person P
JOIN Area A ON P.areaId = A.areaId
ORDER BY P.birthDate, A.areaCode
假设有Area1 和Area2。 Area2 拥有最年长和最新出生的人。因此,Area2 记录应该首先出现。
更新:我设法解决了这个问题,但有什么办法可以缩短此代码。
SELECT *
FROM (SELECT DISTINCT
A.areaCode,
MIN(P.birthDate)
FROM Area A
JOIN Person P on P.areaId = A.areaId
GROUP BY A.areaCode
ORDER BY P.birthDate) T1
JOIN (SELECT DISTINCT
P.personName,
A.areaCode,
P.birthDate
FROM Area A
JOIN Person P on P.areaId = A.areaId
ORDER BY P.createdTimestamp) T2 ON T1.barcode = T2.binId;
【问题讨论】:
-
请分享您的两个表数据以清除您的问题
标签: mysql sql-order-by