[英]sql order by and limit by another value
所以,我有2個表,release和release_favourites。
發布結構:
id date (timestamp) other data
1 1486901083 ...
2 1486909903 ...
....
release_favourites結構:
id releaseId userId
1 2 5
2 2 10
....
我想按日期排序記錄(這在SQL中是沒有問題的),但是我只希望最喜歡的10條記錄可以嗎?
(下面的SQL有效,但僅適用於按日期排序)
SELECT [some rows]
FROM release AS a, release_favourites AS b
WHERE a.id = b.releaseId
ORDER BY a.date
select *
from release
where id in
(
select releaseid
from release_favourites
group by releaseid
order by count(*) desc
limit 10
)
order by date
根據您的描述,您需要GROUP BY
。 您僅顯示一個表(盡管查詢有兩個表)。 這是您想要的(合理的)猜測:
select rf.release_id
from release_favourites rf
group by rf.release_id
order by count(*) desc
fetch first 10 rows only;
您可以在任何領域,你實際上是從另一個表要加入(或使用in
或exists
)。 並非所有數據庫都支持ANSI標准fetch first 10 rows only
語法。 但是,所有方法都可以將結果集限制為給定的行數。
SELECT DISTINCT [some rows]
FROM release
WHERE id IN (
SELECT releaseId
FROM (
SELECT releaseId
FROM release_favourite
GROUP BY releaseId
ORDER BY count(*)
DESC LIMIT 10
)
AS tmp
)
ORDER BY date
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.