order by和distinct导致结果显示顺序,怎么解决
时间: 2023-08-05 07:24:12 浏览: 92
如果您使用了 `ORDER BY` 子句,那么查询结果的显示顺序就会按照该子句指定的字段进行排序。而如果您使用了 `DISTINCT` 关键字,查询结果会去掉重复记录,这也可能会影响显示顺序。
如果您需要按照某个字段排序,并且又需要去掉重复记录,可以使用子查询的方式来实现,例如:
```sql
SELECT DISTINCT
sub.recyclebinId,
sub.recyclebinName,
sub.phone,
sub.nickName
FROM (
SELECT
rror.recyclebin_id AS recyclebinId,
rdt.name AS recyclebinName,
sur.phonenumber AS phone,
sur.nick_name AS nickName,
ror.complete_time AS completeTime
FROM
re_order ror
INNER JOIN re_recyclebin_order rror ON rror.id = ror.recyclebin_order_id
INNER JOIN re_digit_recyclebin rdt ON rdt.id = rror.recyclebin_id
LEFT JOIN sys_user sur ON rdt.admin_id = sur.user_id
WHERE
ror.order_status = '50'
AND order_user = #{userId}
) sub
ORDER BY
sub.completeTime DESC
```
这样就可以先通过子查询得到符合条件的所有记录,再对子查询结果进行去重和排序,避免了 `ORDER BY` 和 `DISTINCT` 的冲突问题。
阅读全文