簡體   English   中英

在表中查找行關系

[英]Finding rows relation in a table

我有一台PC,列nameprice

我想在表中顯示每台PC的名稱和其他PC的總數(價格較高),我該怎么做?

您可以自聯接表並使用聚合:

SELECT p.name, p.price, COALESCE(COUNT(p1.name), 0) cnt
FROM pc p
LEFT JOIN pc p1 ON p1.price > p.price
GROUP BY p.name, p.price

在MySQL 8.0中,您還使用窗口函數,這些函數通常比聚合或相關子查詢更有效:

SELECT 
    p.name, 
    p.price, 
    RANK() OVER(ORDER BY price DESC) - 1 rn
FROM pc p

使用相關的子查詢來選擇價格較高的所有PC並將其計入匯總中。

SELECT pc1.name,
       (SELECT count(*)
               FROM pc pc2
               WHERE pc2.price > pc1.price)
       FROM pc pc1;
select 
  pc1.name,
  (select count(*) from PC pc2 where pc2.price > pc1.price) as count_bigger_price
from PC pc1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM