2014-01-22 45 views
1

我使用下面的查询在SQL中选择一个名称

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 

我想只能选择最这里我只需要电子。如何得到这个。预先感谢您的帮助... >>

+0

MySQL或SQL服务器,限价附近请 – StuartLC

回答

2

试试这个:

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; 
+0

语法不正确。越来越 – Arun

+0

@Arun你正在使用哪台服务器? –

+0

SQL2012服务器...... – Arun