我在MySQL中有一個表,其中有一個字段「class_id」。我需要編寫一個查詢,返回使用降序時間順序排序的前15行,對於IN列表中的每個值都使用IN子句。使用IN子句進行Mysql查詢並限制每個項目
查詢用於解釋:
select * from table_x where class_id IN (1,2,3) sort by time_x desc limit 15;
在上述例子中的查詢,我需要爲每個讀取類標識碼前15行(1,2和3)有序基於降序時間順序。
我在MySQL中有一個表,其中有一個字段「class_id」。我需要編寫一個查詢,返回使用降序時間順序排序的前15行,對於IN列表中的每個值都使用IN子句。使用IN子句進行Mysql查詢並限制每個項目
查詢用於解釋:
select * from table_x where class_id IN (1,2,3) sort by time_x desc limit 15;
在上述例子中的查詢,我需要爲每個讀取類標識碼前15行(1,2和3)有序基於降序時間順序。
你需要的MySQL user defined variables
SELECT
*
FROM
(
SELECT
X.*,
IF(@sameClass = class_id, @rn := @rn + 1,
IF(@sameClass := class_id, @rn := 1, @rn := 1)
) AS rank
FROM table_x AS X
CROSS JOIN (SELECT @sameClass := 0, @rn := 1) AS var
WHERE class_id IN (1, 2, 3)
ORDER BY class_id, time_x DESC
) AS t
WHERE t.rank <= 15
ORDER BY t.class_id, t.rank
幫助你的情況LIMIT 15
實際上將結果集限制最多可容納15條記錄這是不是你想要的。
請張貼表結構。 – 1000111