2016-10-31 6 views
-1

残りの部分とは異なる方法でクエリの最上位行をどのように並べ替えるのですか?たとえば、名前と価格の商品のリストがある場合は、最も高価な10の商品が価格の下に注文され、残りの商品は商品名で注文されます。私の心に何が来るのかSQLの上位行は残りの部分とは異なります

はこのようなものです:

SELECT id,name, price FROM products ORDER BY price DESC LIMIT 10 
UNION ALL 
SELECT id,name,price FROM products 
    WHERE id NOT IN 
    (SELECT id FROM products ORDER BY price DESC LIMIT 10) 
    ORDER BY name 

が、このクエリが実行されない、それは私が別の選択に選択をラップする場合は、さらに、それはLIMIT & IN/ALL/ANY/SOME subqueryを印刷し、Incorrect usage of UNION and ORDER BYを印刷します。何か案が?

+0

http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-veryを参照してください。 -simple-sql-query – Strawberry

答えて

0
select * from 
(
SELECT 1 a, id,name, price FROM products ORDER BY price DESC LIMIT 10 
UNION ALL 
SELECT 0, id,name,price FROM products 
    WHERE id NOT IN 
    (SELECT id FROM products ORDER BY price DESC LIMIT 10) 
) 
order by a*price desc, name 
+0

よく、サブクエリのLIMITについてわかりません。たぶん、1と0の考え方は、(ビューを作成して)制限を行う方法を見つけることができれば、正しいサブセットの価格を複数倍にすることができます。 – Randy

関連する問題