Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何运行此查询?_Sql_Database - Fatal编程技术网

Sql 如何运行此查询?

Sql 如何运行此查询?,sql,database,Sql,Database,我有下表 MID IID 1 23 1 24 1 25 2 32 2 54 3 11 4 55 5 67 我想找到所有的MID,其中计数(IID)>1 i、 e结果如下 MID count(IID) 1 3 2 2 另外,我试过了,但是我在所有的中期测试中都得到了结果。这是我的问题 select distinct a.MID,count(a.IID) from Item_attribute as a group by a.MID

我有下表

MID IID

1   23

1   24

1   25

2   32

2   54

3   11

4   55

5   67
我想找到所有的MID,其中计数(IID)>1 i、 e结果如下

MID count(IID)

1   3

2   2
另外,我试过了,但是我在所有的中期测试中都得到了结果。这是我的问题

select distinct a.MID,count(a.IID) from Item_attribute as a group by a.MID

添加如下条款:

having count(a.IID)>1

在SELECT语句中使用HAVING子句:

SELECT a.MID,count(a.IID) 
FROM Item_attribute as a 
GROUP BY a.MID
HAVING COUNT(a.IID) > 1

请尝试以下方法

SELECT MID,
       COUNT( IID ) as CountIID
    FROM Item_attribute
    GROUP BY MID
HAVING COUNT( IID ) > 1;
SELECT MID,
       CountIID
FROM
(
    SELECT MID,
           COUNT( IID ) as CountIID
    FROM Item_attribute
    GROUP BY MID
    HAVING COUNT( IID ) > 1
) AS limitedCountIIDFinder
WHERE CountIID =  ( SELECT MAX( CountIID ) AS MaxCountIID
                    FROM
                    (
                        SELECT MID,
                               COUNT( IID ) as CountIID
                        FROM Item_attribute
                        GROUP BY MID
                    ) AS countIIDFinder
                  )
对于其他查询,请尝试以下操作

SELECT MID,
       COUNT( IID ) as CountIID
    FROM Item_attribute
    GROUP BY MID
HAVING COUNT( IID ) > 1;
SELECT MID,
       CountIID
FROM
(
    SELECT MID,
           COUNT( IID ) as CountIID
    FROM Item_attribute
    GROUP BY MID
    HAVING COUNT( IID ) > 1
) AS limitedCountIIDFinder
WHERE CountIID =  ( SELECT MAX( CountIID ) AS MaxCountIID
                    FROM
                    (
                        SELECT MID,
                               COUNT( IID ) as CountIID
                        FROM Item_attribute
                        GROUP BY MID
                    ) AS countIIDFinder
                  )
(后面的解释…)


如果您有任何问题或意见,请随时发表相应的意见。

如果您希望对聚合字段设置条件,您需要使用
having

如果使用分组方式,也不需要使用distinct。
就你而言:

select a.MID,count(a.IID) from Item_attribute as a group by a.MID having count(a.IID)>1 
如果要获取“最大计数”值,请按降序对其进行排序,并获取前1:

select top 1 a.MID,count(a.IID) 
from Item_attribute as a 
group by a.MID 
having count(a.IID)>1 
order by count(a.IID) desc

添加如下having子句:“having count(a.IID)>1”是的,它起作用了……谢谢!还有一件事…如果我必须只找到包含最大值(计数(iid))的MID呢?谢谢。。还有一件事,如果我必须只找到包含max(count(iid))的MID,该怎么办?我已经更新了我的答案,以包含一个查询,该查询将完成这项工作。它会给你所有顶级国家的记录。如果你只想要一个,选择哪一个重要吗?