Php SQL按时间戳排序和按id分组

Php SQL按时间戳排序和按id分组,php,sql,Php,Sql,我一起使用php、mysql和html来显示一个表。 但我想按时间戳对项目进行排序,并将具有相同id的项目分组在一起。 例如: 未排序的表: timestamp id name description 14:02 2 Hans Is very nice! 12:01 3 Jürgen Is very bad! 10:03 2 Hans

我一起使用php、mysql和html来显示一个表。 但我想按时间戳对项目进行排序,并将具有相同id的项目分组在一起。 例如:

未排序的表:

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.
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!
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!
右排序表:

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.
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!
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!
排序错误的表:

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.
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!
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!
我认为必须有一个内部连接:首先找到具有最早时间戳的项。然后查看是否有其他具有相同ID的项目:如果是,则必须将其放置在具有最早时间戳的项目旁边

试试这个:

子查询将返回具有NewTimeStamp的temp列,该列对于相同的id列值将是相同的

SELECT
    X.timestamp,
    X.Id,
    X.name,
    X.description
FROM
(
    SELECT TMain.timestamp,TMain.id,TMain.name,TMain.description
    (
       CASE WHEN ((SELECT COUNT(1) FROM @tblTest T WHERE T.Id=TMain.Id))>0 
       THEN (SELECT TOP(1) timestamp  FROM @tblTest T WHERE T.Id=TMain.Id ORDER BY timestamp) 
       ELSE timestamp END 
    ) AS NewTimeStamp FROM @tblTest TMain
)X
ORDER BY X.NewTimeStamp,X.timestamp

如果您对同时使用MySQL和PHP的答案感兴趣,那么这将实现您想要的

MySQL

PHP


您当前的查询是什么样子的?我想使用SELECT*…我们需要的不仅仅是这些。你的意思是你目前没有任何疑问,对吗?你已经试过什么了?确切地说,什么对您不起作用?请添加您的查询以使用此SELECT*FROM table GROUP BY id ORDER BY timestamp我可以知道否决投票的原因吗?因为这是错误的。只有在主排序列中多次出现相同值时,才会使用次排序列。是,这是错误的!我必须测试它!除非他不想要时间戳:按从低到高的值对时间戳进行排序。他不需要id:它将订购id列请检查更新的解决方案获取我的UV纯粹是为了努力和tanacity@RiggsFolly谢谢: