首页 > 解决方案 > 新学习者的简单查询

问题描述

只需要新的 sql 学习者的帮助。

我有两张桌子。产品,供应商。产品具有 Vendor_ID 作为外键。我需要显示每个供应商的 vendor_name、vendor_phone 和产品数量。如果您能帮助我简单地解释查询,我会很高兴。

标签: sql

解决方案


你可以像下面这样COUNT(*)使用。GROUP BY

SELECT V.VendorId, V.Vendor_Name AS VendorName, V.Vendor_Phone, Count(*) [Count]
FROM Vendor V INNER JOIN Product P ON P.Vendor_ID = V.Vendor_ID 
GROUP BY  V.VendorId, V.Vendor_Name,V.Vendor_Phone

或使用如下子查询。

SELECT V.Vendor_Name AS VendorName, V.Vendor_Phone,
  (
   SELECT COUNT(*) FROM Product P WHERE P.Vendor_ID = V.Vendor_ID 
  ) AS [Count]
FROM Vendor V

您也可以使用 来执行此操作ROW_NUMBER(),如下所示。

SELECT * FROM
(
    SELECT V.VendorId, V.Vendor_Name AS VendorName, V.Vendor_Phone, 
            ROW_NUMBER() OVER(PARTITION BY V.Vendor_ID  ORDER BY V.Vendor_ID) RN
            Count(*) OVER(PARTITION BY V.Vendor_ID  ORDER BY V.Vendor_ID) [Count]
    FROM Vendor V INNER JOIN Product P ON P.Vendor_ID = V.Vendor_ID 
) T
WHERE T.RN=1

推荐阅读