Mysql sql order by和limit by另一个值
所以,我有两个表,发布和发布您的最爱 发布结构:Mysql sql order by和limit by另一个值,mysql,sql,Mysql,Sql,所以,我有两个表,发布和发布您的最爱 发布结构: id date (timestamp) other data 1 1486901083 ... 2 1486909903 ... .... id releaseId userId 1 2 5 2 2 10 .... 发布收藏夹结构: id date (timestam
id date (timestamp) other data
1 1486901083 ...
2 1486909903 ...
....
id releaseId userId
1 2 5
2 2 10
....
发布收藏夹结构:
id date (timestamp) other data
1 1486901083 ...
2 1486909903 ...
....
id releaseId userId
1 2 5
2 2 10
....
我想按日期排序记录(这不是SQL中的问题),但我只想要10条最受欢迎的记录,这可能吗
(下面的SQL有效,但仅适用于按日期订购)
根据您的描述,您需要
分组依据
。您只显示一个表(尽管您的查询有两个表)。这是对你想要什么的(合理)猜测:
select rf.release_id
from release_favourites rf
group by rf.release_id
order by count(*) desc
fetch first 10 rows only;
您可以从另一个表中加入实际需要的任何字段(或使用
中的或存在的)。并非所有数据库都支持ANSI标准仅获取前10行
语法。但是它们都有某种方式将结果集限制为给定的行数。(1)用您正在使用的数据库标记您的问题。(2) 切勿在FROM
子句中使用逗号。始终使用正确、明确的JOIN
语法。(3) 编辑您的问题并显示所需的结果。@GordonLinoff为什么不将[table]用作?这是可行的,但我不能在子查询中使用limit:此版本的MariaDB还不支持“limit&in/ALL/ANY/SOME子查询”
@nacelnikpohodar。我无意冒犯杜杜,但是为什么你会接受一个答案,然后评论它不起作用呢?@GordonLinoff-没有,同样的想法。@GordonLinoff这是正确的,我只需要再补充一个subquery@nacelnikpohodar-嗨,你能分享一下你最后的语法吗?
select *
from release
where id in
(
select releaseid
from release_favourites
group by releaseid
order by count(*) desc
limit 10
)
order by date