【问题标题】:Select a name in sql在sql中选择一个名字
【发布时间】:2014-02-12 07:32:43
【问题描述】:

我使用以下查询从类别表中选择类别名称

select Category.Name 
  from Product 
    inner  join ProductCategory on ProductCategory.PID=Product.PID 
    inner join ProductMaterial on ProductMaterial.PID=Product.PID 
    left join Category on Category.NodeId=ProductCategory.CID 
  where PID in('2233','4432','5665','1252')  
  group by ProductCategory.CID, ProductMaterial.MID,Category.DanishName

查询正在运行,此查询的结果是

Electronics
Electronics
Electronics
Home and Garden

我只想选择最多的类别名称,这里我只需要电子产品。如何获得这个。在此先感谢您的帮助...>>

【问题讨论】:

  • 请使用mysql或sql-server

标签: sql sql-server select sql-order-by top-n


【解决方案1】:

试试这个:

MySQL

SELECT A.name, COUNT(A.name) nameCnt
FROM (SELECT C.Name 
      FROM Product P 
      INNER JOIN ProductCategory PC ON PC.PID=P.PID 
      INNER JOIN ProductMaterial PM ON PM.PID=P.PID 
      INNER JOIN Category C ON C.NodeId=PC.CID 
      WHERE PID IN('2233','4432','5665','1252')  
      GROUP BY PC.CID, PM.MID, C.DanishName 
    ) AS A 
GROUP BY A.name 
ORDER BY nameCnt DESC LIMIT 1;

SQL 服务器

SELECT TOP 1 A.name, COUNT(A.name) nameCnt
FROM (SELECT C.Name 
      FROM Product P 
      INNER JOIN ProductCategory PC ON PC.PID=P.PID 
      INNER JOIN ProductMaterial PM ON PM.PID=P.PID 
      INNER JOIN Category C ON C.NodeId=PC.CID 
      WHERE PID IN('2233','4432','5665','1252')  
      GROUP BY PC.CID, PM.MID, C.DanishName 
    ) AS A 
GROUP BY A.name 
ORDER BY nameCnt DESC;

【讨论】:

  • @Arun 您使用的是哪个服务器?
猜你喜欢
  • 1970-01-01
  • 2011-04-03
  • 1970-01-01
  • 1970-01-01
  • 2014-09-21
  • 2016-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多