DDL:(ループやその他もろもろを使用して構築することは容易である)
create table Te (product_id int, popularity int, date_add int);
insert into Te (product_id, popularity, date_add)
values
(1, 10, 1),
(2, 21, 1),
(3, 12, 1),
(4, 23, 1),
(5, 5, 1),
(6, 2, 5),
(7, 3, 6),
(8, 1, 7),
(9, 1, 1),
(11, 210, 11),
(12, 221, 11),
(13, 212, 11),
(14, 223, 11),
(15, 25, 11),
(16, 22, 15),
(17, 23, 16),
(18 , 21, 27),
(19, 21, 31);
SQL
(select * from Te order by popularity desc LIMIT 5 OFFSET 0)
UNION ALL
(select * from Te order by date_add desc LIMIT 1 OFFSET 0)
UNION ALL
(select * from Te order by popularity desc LIMIT 5 OFFSET 5)
UNION ALL
(select * from Te order by date_add desc LIMIT 1 OFFSET 1)
UNION ALL
(select * from Te order by popularity desc LIMIT 5 OFFSET 10)
UNION ALL
(select * from Te order by date_add desc LIMIT 1 OFFSET 2)
UNION ALL
(select * from Te order by popularity desc LIMIT 5 OFFSET 15)
UNION ALL
(select * from Te order by date_add desc LIMIT 1 OFFSET 3)
結果:あなたはで見るようにあなたが重複を持っています
product_id popularity date_add
14 223 11
12 221 11
13 212 11
11 210 11
15 25 11
*19 21 31
17 23 16
4 23 1
*16 22 15
*19 21 31
*2 21 1
18 21 27
*2 21 1
3 12 1
1 10 1
5 5 1
7 3 6
17 23 16
6 2 5
9 1 1
8 1 7
*16 22 15
あなたはおそらくそれらをフィルタリングしたいと思っています....
質問を編集して、これまでに試したことをお見せしてください。 –
@SaucedApples Seriuosly、私はこの1つを試そうとは思わないでしょう。 – isaace
あなたの人気声明から40の結果を得て、最新のテーブルから8つの結果を得て、それらが必要なところでコードに入れてください。もしあなたが本当にSQLでそれらを必要とするならば、 'SELECT * FROM foo LIMIT 10、 50 '、 'UNION ALL'を設定し、制限するパラメータを上げます。最新のテーブルに同じものを使用してください –