最近更新されたページを追跡するテーブルがあり、各ページにタイプがあります。私は、タイプ3のページを3つだけ引き出し、タイプ3の3ページだけを引き出すように結果を制限したいが、それでもlastUpdatedによってソートされている。私はUNION
を使用しているMySQL - 2つのクエリを結合するか結果を制限する
ORDER BY lastUpdated DESC
最近更新されたページを追跡するテーブルがあり、各ページにタイプがあります。私は、タイプ3のページを3つだけ引き出し、タイプ3の3ページだけを引き出すように結果を制限したいが、それでもlastUpdatedによってソートされている。私はUNION
を使用しているMySQL - 2つのクエリを結合するか結果を制限する
ORDER BY lastUpdated DESC
1つの明らかな方法は、それを行うには... mysqlのその後
SELECT * from recentlyUpdated WHERE type = 'x' DESC LIMIT 3
SELECT * from recentlyUpdated WHERE type = 'y' DESC LIMIT 3
でこれを行う方法を見つけ出すことはできません。
SELECT *
FROM (
SELECT *
FROM recentlyUpdated
WHERE type = 'x'
LIMIT 3
UNION ALL
SELECT *
FROM recentlyUpdated
WHERE type = 'y'
LIMIT 3) AS t
ORDER BY lastUpdated DESC
を別の方法として、あなたを変数を使用できます。
SELECT *
FROM (
SELECT *,
@seq := IF(@t = type, @seq + 1,
IF(@t := type, 1, 1)) AS seq
FROM recentlyUpdated
CROSS JOIN (SELECT @seq := 0, @t := '') AS vars
WHERE type IN ('x', 'y')
ORDER BY type) AS t
WHERE t.seq <= 3
ORDER BY lastUpdated DESC
これはあなたを助けるかもしれません;)
(SELECT * from recentlyUpdated WHERE type = 'x'lastUpdated ORDER BY DESC LIMIT 3)
UNION ALL
(SELECT * from recentlyUpdated WHERE type = 'y'lastUpdated ORDER BY DESC LIMIT 3)
ORDER BY lastUpdated DESC
私はそれを理解できませんでした。ありがとうございました!いつか組合は私をそんなに混乱させません。 – Andelas