我有一个基于子查询结果进行查询的查询。我想按子查询中的列进行排序,但从我通过查看类似问题可以了解到,您确实不应该在子查询中使用 ORDER BY (这使得该查询不正确)。
有什么方法可以使用别名或类似的方法来做到这一点吗?
在子查询表中有一个名为“lastUpdated”的列,我想根据它对主查询表的结果进行排序。
请参阅下面我尝试的查询:
SELECT * FROM TrackedEntityInstance
WHERE localId IN
(SELECT DISTINCT localTrackedEntityInstanceId FROM Enrollment
WHERE program IS 'SSLpOM0r1U7' AND orgUnit IS 'gGl6WgM3qzS'
ORDER BY lastUpdated ASC);`
最佳答案
您可以使用如下所示的联接...我认为它也更快..
SELECT *
FROM trackedentityinstance t1
JOIN
(
SELECT DISTINCT localtrackedentityinstanceid, lastupdated
FROM enrollment
WHERE program IS 'SSLpOM0r1U7'
AND orgunit IS 'gGl6WgM3qzS'
) t2
ON t1.id=t2.localtrackedentityinstanceid
ORDER BY t2.lastupdated ASC
我假设您在 trackedentityinstance
表中有 id
字段。如果没有,请调整查询并尝试一下。
关于mysql - 在子查询中按列对最终结果进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39660364/