Mysql查询中的订单和组行

时间:2018-07-20 15:35:21

标签: mysql mysql-workbench

我正在尝试执行以下mysql查询并得到提及的错误。

SELECT * FROM `selector` WHERE `to_id`='44' ORDER BY `time` DESC 
GROUP BY `event_id`, `entity_guid`;
  

您的SQL语法有错误;检查手册   对应于您的MySQL服务器版本以使用正确的语法   在第1行的“ GROUP BY event_identity_guid LIMIT 0,25”附近

有人可以帮助纠正/重写此查询吗,因为我需要先对行进行降序排列time,然后通过将event_identity_guid分组来消除重复的条目

下面是我的SELECTOR表的表示形式

|------|-------|----------|-------------|-------------|
|fr_id | to_id | event_id | entity_guid | time        |
|------|-------|----------|-------------|-------------|
| 44   | 54    |  4       | 0           | 1531121058  |
|------|-------|----------|-------------|-------------|
| 54   | 44    |  3       | 0           | 1531063718  |
|------|-------|----------|-------------|-------------|
| 54   | 44    |  2       | 609         | 1531063431  |
|------|-------|----------|-------------|-------------|
| 54   | 44    |  1       | 608         | 1530975443  |
|------|-------|----------|-------------|-------------| 
| 150  | 44    |  1       | 608         | 1531542247  |
|------|-------|----------|-------------|-------------|     

我需要的实际结果如下

|------|-------|----------|-------------|-------------| 
| 150  | 44    |  1       | 608         | 1531542247  |
|------|-------|----------|-------------|-------------|
| 54   | 44    |  3       | 0           | 1531063718  |
|------|-------|----------|-------------|-------------|
| 54   | 44    |  2       | 609         | 1531063431  |
|------|-------|----------|-------------|-------------|   

2 个答案:

答案 0 :(得分:0)

ORDER BY子句位于GROUP BY子句之后。

答案 1 :(得分:0)

您的查询应该是这样

SELECT `event_id`, `entity_guid` FROM `selector` 
WHERE `to_id`='44'
    GROUP BY `event_id`, `entity_guid`
     ORDER BY `time` DESC 

如果您需要更多帮助,请共享您的数据集和预期输出