【问题标题】:Order By before Group By in MysqlMysql中Group By之前的Order By
【发布时间】:2016-04-03 05:20:54
【问题描述】:

在查询字符串中使用Order ByGroup By 时遇到问题。

我想要Order By 之前的Group By 但它不起作用。

我搜索并找到了一些解决方案,但它不适用于我:

SELECT * FROM 
(
    SELECT minder_id, service_type_id
    FROM minder_service
    WHERE minder_id = 238
    AND deleted_at is null
    ORDER BY service_type_id ASC
) AS t
GROUP BY t.minder_id
  • 运行 1

    SELECT minder_id, service_type_id 从minder_service 其中minder_id = 238 AND deleted_at 为空 ORDER BY service_type_id ASC

结果: Photo for Result 1

请看一下。

非常感谢。

【问题讨论】:

  • 你想要完成什么?
  • 你想通过这个查询做什么?在这个查询中没有任何表名
  • 你想要最低的 service_type_id 吗?如果是,则使用 DESC 而不是 ASC
  • 是的,我认为使用 ASC 来获得最低的 service_type_id,但我将查询更改为使用 DESC,结果仍然 = 2

标签: mysql sql laravel-4


【解决方案1】:

如果想要最低的service_type_id,可以使用MIN函数:

SELECT minder_id, MIN(service_type_id)
FROM  minder_service
WHERE minder_id = 238 AND deleted_at IS NULL
GROUP BY minder_id

如果您说您期望该记录,还要确保对于 service_type_id 为 1 的记录,deleted_at 确实为 NULL。

【讨论】:

  • 不客气,但在stackoverflow,目的是将答案标记为已接受。这样,您就表明它对您有用,并且您将功劳归功于回答的人。
【解决方案2】:

子查询返回一个无序集。将子查询的结果传递给外部查询或执行group by 操作时,数据库不必保持顺序。

你应该重新考虑你想要做什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-18
    • 1970-01-01
    • 2013-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多