我已经复制了您在最初问题中描述的内容,但我看不出原始 concat 查询存在什么问题。
表格如下:-
mysql> desc posts;
+------------+------------+------+-----+------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+------------+------+-----+------------+----------------+
| PostId | int(11) | NO | PRI | NULL | auto_increment |
| PostedAs | varchar(8) | YES | | USER | |
| PostedAsId | int(11) | YES | | NULL | |
| PostedDate | date | YES | | 0000-00-00 | |
| PostedTime | time | YES | | 00:00:00 | |
+------------+------------+------+-----+------------+----------------+
5 rows in set (0.01 sec)
表中的数据为:-
mysql> select * from posts;
+--------+----------+------------+------------+------------+
| PostId | PostedAs | PostedAsId | PostedDate | PostedTime |
+--------+----------+------------+------------+------------+
| 1 | USER | 22 | 1977-01-13 | 12:34:56 |
| 2 | USER | 47 | 1977-02-13 | 00:00:00 |
| 3 | USER | 52 | 1977-03-13 | 00:00:00 |
| 4 | USER | 7 | 1977-04-13 | 00:00:00 |
| 5 | USER | 47 | 1977-05-13 | 00:00:00 |
| 6 | USER | 22 | 1977-06-13 | 00:00:00 |
| 7 | USER | 52 | 1977-07-13 | 00:00:00 |
| 8 | USER | 52 | 1977-08-13 | 00:00:00 |
| 9 | USER | 59 | 1977-09-13 | 00:00:00 |
| 10 | USER | 7 | 1977-10-13 | 00:00:00 |
| 11 | USER | 7 | 1977-11-13 | 00:00:00 |
+--------+----------+------------+------------+------------+
11 rows in set (0.00 sec)
运行问题中提供的查询
mysql> SELECT * FROM Posts
-> WHERE PostedAs = 'USER'
-> GROUP BY PostedAsId
-> ORDER BY CONCAT(PostedDate,PostedTime) DESC;
+--------+----------+------------+------------+------------+
| PostId | PostedAs | PostedAsId | PostedDate | PostedTime |
+--------+----------+------------+------------+------------+
| 9 | USER | 59 | 1977-09-13 | 00:00:00 |
| 4 | USER | 7 | 1977-04-13 | 00:00:00 |
| 3 | USER | 52 | 1977-03-13 | 00:00:00 |
| 2 | USER | 47 | 1977-02-13 | 00:00:00 |
| 1 | USER | 22 | 1977-01-13 | 12:34:56 |
+--------+----------+------------+------------+------------+
5 rows in set (0.00 sec)
同一查询的重新排列(排序):-
mysql> SELECT * FROM Posts
-> WHERE PostedAs = 'USER'
-> GROUP BY PostedAsId
-> ORDER BY PostedDate DESC, PostedTime DESC;
+--------+----------+------------+------------+------------+
| PostId | PostedAs | PostedAsId | PostedDate | PostedTime |
+--------+----------+------------+------------+------------+
| 9 | USER | 59 | 1977-09-13 | 00:00:00 |
| 4 | USER | 7 | 1977-04-13 | 00:00:00 |
| 3 | USER | 52 | 1977-03-13 | 00:00:00 |
| 2 | USER | 47 | 1977-02-13 | 00:00:00 |
| 1 | USER | 22 | 1977-01-13 | 12:34:56 |
+--------+----------+------------+------------+------------+
5 rows in set (0.00 sec)
使用您自己提供的 concat order by 或我自己的 double order by 似乎都可以为上面详述的表格/数据提供正确的结果,每个用户都被选中一次,发布日期/ID 是最新发布的.
如果您的架构与我在此处提供的架构存在显着差异,请随时澄清。
从表面上看,这个问题似乎在原来的问题中有解决方案。
祝你好运!