簡體   English   中英

sql命令由另一個值限制

[英]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;

您可以在任何領域,你實際上是從另一個表要加入(或使用inexists )。 並非所有數據庫都支持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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM