【问题标题】:how to select with group by order by and desc?如何通过 order by 和 desc 选择 group?
【发布时间】:2013-03-03 13:52:59
【问题描述】:

我想选择表中的数据,以便它应该按用户 ID 对它进行分组,但该列中的一个值除外,并按日期时间和 desc 排序。 我遇到的问题是分组项目没有按日期和时间以及以 desc 方式排序。 我的意思是分组项目显示较早的行。 我怎样才能做到这一点。 这就是我所做的。

SELECT * FROM `tbljobs`
   GROUP BY user_id
   UNION ALL 
     SELECT * FROM tbljobs
     WHERE user_id = '1'
     ORDER BY date_time DESC
     LIMIT 20"

不应将“1”所在的位置分组。

【问题讨论】:

    标签: mysql database select


    【解决方案1】:

    您的 ORDER BY 仅在第二条语句上执行。您必须使用大括号对整个结果进行排序:

    (SELECT *
    FROM `tbljobs`
    GROUP BY user_id)
    UNION ALL 
    (SELECT *
    FROM tbljobs
    WHERE user_id = '1')
    ORDER BY date_time DESC
    

    【讨论】:

    • 感谢这个。但我认为我没有正确解释我的问题。该列按日期和时间以 desc 方式分组,但分组的用户显示的是旧作业。
    【解决方案2】:

    感谢朋友的建议。经过一番努力,我终于自己创建了解决方案。

    (
     SELECT * 
     FROM (
           SELECT * 
           FROM tbljobs 
           ORDER BY date_time desc 
          ) AS A 
     WHERE user_id <> '1' group by user_id 
    ) 
    UNION ALL 
    (
     SELECT * 
     FROM tbljobs 
     WHERE user_id=1
    ) 
    ORDER BY date_time DESC
    

    【讨论】:

      猜你喜欢
      • 2020-03-09
      • 2013-09-20
      • 1970-01-01
      • 1970-01-01
      • 2020-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多