数据库:MySQL5.6 users
表格:
| id | name |
| -- | ---- |
| 1 | A |
| 2 | B |
``` `user_likes` 表格:
| id | user_id | star | created_at |
| -- | ------- | ---- | ------------------- |
| 1 | 1 | 2 | 2018-09-12 00:00:00 |
| 2 | 2 | 3 | 2018-09-12 00:00:00 |
查询1
select u.name, ul.user_id
from users u, user_likes ul
where u.id = ul.user_id
order by ul.star desc, ul.created_at desc;
查询2
select u.name, ul.user_id
from users u, user_likes ul
where u.id = ul.user_id
group by ul.user_id
order by ul.star desc, ul.created_at desc;
为什么添加后结果顺序发生变化 `group by ul.user_id` 在这种情况下?
所以你想从 `user_likes` ,怎么办?
2条答案
按热度按时间6l7fqoea1#
因为您没有使用任何聚合列,并且您的字段不是
GROUP BY
或者ORDER BY
你得到的是随机的行。在你的第一个问题中
order by ul.star desc, ul.created_at desc
如果多行具有相同的星号和相同的属性,那么结果可以给出这些行的随机顺序。在你的第二个问题上,你首先
group by user.id
但你没有任何聚合。对于您选择的字段,可以获得属于该组的任何行或任何随机结果。当我说随机更像是不确定的,因为我不喜欢每次都有不同的结果。通常取决于数据的存储方式或是否使用了索引。
t1qtbnec2#
最佳方式结果