0

このSQLクエリから基準クエリを作成したいのですが:

SELECT * FROM `Product` p
ORDER BY (SELECT COUNT(*) FROM `Sale` WHERE `product_id` = p.id) DESC

サブクエリでそれを行う方法が見つかりません...

4

2 に答える 2

1

暗黙的な結合を試してください。

select *
from (
    select 
         p.*, 
         (select count(*) from sale s where s.product_id = p.id) as cnt 
    from product p
)a 
order by cnt desc
于 2013-02-26T22:13:15.640 に答える
1

Order Byパーツに存在する列にのみ適用されますselect

したがって、基本的には次のようなものが機能します。

SELECT Group, COUNT(*) as total
FROM table
GROUP BY Group
ORDER BY total DESC

したがって、あなたの場合、次のようなことができます。

SELECT *, (SELECT COUNT(*) FROM `Sale` WHERE `product_id` = p.id) as total FROM `Product` p
ORDER BY total DESC

注:これは完全にテストされていません。

于 2013-02-26T22:13:26.510 に答える