mysql查询,按日期、时间和名称对数据进行排序(但不希望在每个日期下拆分常用名称)

mysql查询,按日期、时间和名称对数据进行排序(但不希望在每个日期下拆分常用名称),mysql,sql,Mysql,Sql,我有一个MySQL查询,它生成如下顺序的输出: 相反,我希望输出的顺序如下: 我不知道如何编写查询,以便它按照我需要的方式对数据进行排序。我需要按date DESC排序的数据,然后按time DESC排序,还需要将常见的“markers\u name”元素分块在一起。我只想在每次约会时把它们拼在一起 这是我正在使用的查询: SELECT markers.name AS markers_name, conditions.time AS conditions_time,

我有一个MySQL查询,它生成如下顺序的输出:

相反,我希望输出的顺序如下:

我不知道如何编写查询,以便它按照我需要的方式对数据进行排序。我需要按date DESC排序的数据,然后按time DESC排序,还需要将常见的“markers\u name”元素分块在一起。我只想在每次约会时把它们拼在一起

这是我正在使用的查询:

SELECT markers.name AS markers_name, 
       conditions.time AS conditions_time, 
       conditions.date AS conditions_date, 
       station.name AS station_name 
FROM markers, conditions, users 
WHERE conditions.markers_id = markers.id 
AND (conditions.station_id = station.id)
ORDER BY date DESC, markers.name, time DESC 
LIMIT 100
另外,我忽略了在输出表中显示station_名称,但它们确实显示在我的实际查询中

编辑: 为了更好地解释这个问题,我增加了一些表格。 请注意,查询实际上并没有返回chunk。我只是加上这个来帮助谈话。每个区块都有一个共同的日期

这是我尝试按日期描述、markers.name描述、time描述排序后的输出

这是我想要的结果:

比较两个输出中的“块4”。上表按名称降序排列。这是不可取的。Marker_name'd'具有最新信息,因此我希望它是第一个。”C'有下一个最新信息。'f'具有最早的信息。下表显示了我需要的订单

希望这能更好地表达这个问题。有人能帮忙吗

编辑2 我尝试了这个建议的答案:orderbydatedesc,time DESC,markers.name DESC,但它不起作用


请注意,区块3是按时间排序的。“e”和“b”行未分组在一起。

如果在查询中按顺序为markers.name添加DESC,会发生什么情况

。。。ORDER BY date DESC,markers.name**DESC,time DESC LIMIT 100?

获取条件中每个标记组合的MAXtime值列表,然后将该列表加入当前查询中获得的行集,并使用MAXtime值进行排序:

SELECT
  m.name AS markers_name,
  c.time AS conditions_time,
  c.date AS conditions_date,
  s.name AS station_name
FROM markers m
  INNER JOIN conditions c ON c.markers_id = m.id
  INNER JOIN station s    ON c.station_id = s.id
  INNER JOIN (
    SELECT
      markers_id,
      date,
      MAX(time) AS time
    FROM conditions
    GROUP BY
      markers_id,
      date
  ) mx ON c.markers_id = mx.markers_id AND c.date = mx.date
ORDER BY
  c.date DESC,
  mx.time DESC,
  m.name DESC,
  c.time DESC

@user418775:如果您尝试我建议的查询,会发生什么情况??它会返回什么?谢谢,对于这个例子来说,这会正确地排序,因为按字母顺序排序时,“位置2”恰好位于“位置1”之后。我正在想办法现在如何重写我的问题。@user418775:如果切换顺序,会发生什么情况:按日期排序,按时间排序,按标记。按名称排序???结果是按时间排序,而名称不会一起摸索。我会给这个问题附上一个截图。如果你尝试我建议的查询会发生什么??它返回什么?嗨,Saher,我编辑了原始问题。希望它变得更加清晰。我认为它将类似于顺序,从条件c2中选择minc2.time,其中c2.marker\u id=markers.id DESC,markers\u name,time DESC LIMIT 100';但也不是这样……我认为这是因为你在时间之前就订购了这个名字。切换时间和标记的顺序。name和我认为你得到了正确的结果,不是吗?那也不行。当我们先按时间排序时,名称不再组合在一起,请参见编辑2。我想只有在时间相同的情况下,按名字排序才会起作用。这看起来很复杂,足以让我的平庸技能得到认可!现在我得到了这个错误,但我正试图解决它:1054-在“团体声明”中的未知栏“条件和日期”你是一个该死的天才伙伴!这管用!只是需要不断地改变条件。。。关于mysql,我有很多东西要学习…我很抱歉,我忘记清理最后一个实例了。当然,我指的是约会,而不是约会。恭喜你弄明白了这一点嗨,安德烈,我现在需要扩展这个查询,我想知道你是否能提供帮助。条件表有一个“private”列。如果“private”设置为1,则仅允许某些人查看查询结果。可以看到它的人包括创建条件报告的人和该人的联系人。条件表有一个“user_id”,其中包含创建条件报告的人员的id。联系人从“联系人”表中获取,该表有两个字段:“用户id”和“朋友id”。你能帮忙吗?非常感谢。我应该提到,我将拥有进行查询的人的用户id。