SQL列出所有行首先查找具有最旧时间戳的行和具有相同id的组行
问题描述:
我使用php,mysql和html一起显示表。 但我想按时间戳排序项目,并将具有相同ID的项目组合在一起。 例子:SQL列出所有行首先查找具有最旧时间戳的行和具有相同id的组行
Unsorted table:
timestamp id name description
14:02 2 Hans Is very nice!
12:01 3 Jürgen Is very bad!
10:03 2 Hans Again good.
11:08 6 Anna BAD!
06:09 11 Peter Good.
Right sorted table:
timestamp id name description
06:09 11 Peter Good.
10:03 2 Hans Again good.
14:02 2 Hans Is very nice!
11:08 6 Anna BAD!
12:01 3 Jürgen Is very bad!
Bad sorted table:
timestamp id name description
06:09 11 Peter Good.
10:03 2 Hans Again good.
11:08 6 Anna BAD!
12:01 3 Jürgen Is very bad!
14:02 2 Hans Is very nice!
我有以下但不工作:
SELECT * FROM fehlerfilm ORDER BY timestamp, imdb_id
我得到的错误排序表。
我想在最后的所有项目! 过程:
- 选择所有并寻找项目最旧的时间戳有一个 项目具有相同的ID? - >如果是将其分组到最老的项目旁边(等于哪个TIMESTAMP)。 - >如果 没有认准第二古老的项目,并再次过程
答
你可以用以下这将通过ID和顺序按时间戳降序排列组,如果你首先想要最新的数据查询。
SELECT * FROM按id ORDER BY时间戳降序
+0
这不起作用,因为当您执行GROUP BY时,只能选择GROUP BY中的任何内容。你的陈述会出现错误。 – CodyMR
答
派生表具有相关的子查询,其返回每个imdb_id最低时间戳fehlerfilm基。按该栏排序:
SELECT timestamp, id, name, description
from
(
select f1.*, (select min(timestamp) from fehlerfilm f2
where f2.imdb_id = f1.imdb_id) as mintime
from fehlerfilm f1
)
ORDER BY mintime, imdb_id, timestamp
+0
我使用foreach循环创建表!:为foreach()提供的无效参数 – SebastianHannes
您需要的是不可能的。根据您的情况,您可以先按时间戳排序,如果有关系,则按ID排序。你不能同时做两个。 –
这似乎是一个浪费的重复。我认为另一个应该被标记为重复的。 – CodyMR