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