mysql - 在子查询中按列对最终结果进行排序

标签 mysql

我有一个基于子查询结果进行查询的查询。我想按子查询中的列进行排序,但从我通过查看类似问题可以了解到,您确实不应该在子查询中使用 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/

相关文章:

php - 使用 jQuery.ajax 在 MySQL 中存储表单数据

php - MySQL 语法不返回结果

javascript - 在页面加载之前加载数据 AngularJS 和 NodeJS

java - ormlite 更改带有问号的字符

php - Silverstripe 从单独的页面类型访问 has_many 数据

php - 当我在我的数据库中输入 connect() 时,我的本地主机服务器出现空白

mysql - 在 Ruby on Rails 中执行 SQL 文件以导入数据库

mysql - 我无法将提交保存到数据库

php - 更新生产服务器上的数据库结构的最佳方法?

php - 如何防止尝试创建同一个用户两次?