Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.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
Mysql 如何从SQL表中获取最大计数和ID_Mysql_Sql_Querying - Fatal编程技术网

Mysql 如何从SQL表中获取最大计数和ID

Mysql 如何从SQL表中获取最大计数和ID,mysql,sql,querying,Mysql,Sql,Querying,这是作为视图创建的我的表。现在我想列出在本例中计数最多的castID,即nm0000116,它在该表中的出现次数/计数应该是5次,我不太确定要使用哪个查询 **castID** nm0000116 nm0000116 nm0000116 nm0000116 nm0000116 nm0634240 nm0634240 nm0798899 您可以使用LIMIT返回最高计数: 但是,如果可能存在联系,则上述查询将只返回一行。如果您想要所有获奖者,可以将上述查询中的计数作为标量结果,并将其与所有计数进

这是作为视图创建的我的表。现在我想列出在本例中计数最多的castID,即nm0000116,它在该表中的出现次数/计数应该是5次,我不太确定要使用哪个查询

**castID**
nm0000116
nm0000116
nm0000116
nm0000116
nm0000116
nm0634240
nm0634240
nm0798899

您可以使用LIMIT返回最高计数:

但是,如果可能存在联系,则上述查询将只返回一行。如果您想要所有获奖者,可以将上述查询中的计数作为标量结果,并将其与所有计数进行比较,以仅返回匹配的计数:

SELECT   castID,
         COUNT(*) AS Cnt
FROM     atable
GROUP BY castID
ORDER BY Cnt DESC
LIMIT    1
;
基本上,与相同,它只是以不同的方式导出top count

或者,您可以使用一个变量对所有计数进行排名,然后仅返回排名为1的计数:

SELECT   castID,
         COUNT(*) AS Cnt
FROM     atable
GROUP BY castID
HAVING   COUNT(*) = (
                        SELECT   COUNT(*)
                        FROM     atable
                        GROUP BY castID
                        ORDER BY Cnt DESC
                        LIMIT    1
                    )
;
请注意,使用上述方法,在运行查询之前,变量必须不存在,或者预先初始化为0或NULL。为了安全起见,您可以在查询中直接初始化变量:

SELECT castID,
       Cnt
FROM   (
          SELECT   castID,
                   COUNT(*) AS Cnt,
                   @r := IFNULL(@r, 0) + 1 AS r
          FROM     atable
          GROUP BY castID
          ORDER BY Cnt DESC
       ) AS s
WHERE r = 1
;

这是我输入的:SELECT MAXE,SELECT COUNTcaseID中的castID,castID AS E从导演获奖电影列表组中按castID BUUTT我得到MySQL说:1248-每个派生表必须有自己的别名是的,使用引号,1248-每个派生表都必须有自己的别名现在我得到了一个错误1054-字段列表中的未知列't.castID'@user3601148:更新了我的post1054-字段列表中的未知列'castID'仍在持续heeyy谢谢,你能告诉我如何获得所选castID的计数吗?是的,只需在Select子句中包含count*。。。我编辑了查询。我一直在尝试创建一个视图,但它给了我一个错误:1349视图slect在from子句中包含一个子查询,您有什么建议吗?请通过提供您尝试过的代码来澄清您的具体问题。正如目前所写的,很难准确地说出你在问什么。
SELECT   castID,
         COUNT(*) AS Cnt
FROM     atable
GROUP BY castID
HAVING   COUNT(*) = (
                        SELECT   COUNT(*)
                        FROM     atable
                        GROUP BY castID
                        ORDER BY Cnt DESC
                        LIMIT    1
                    )
;
SELECT castID,
       Cnt
FROM   (
          SELECT   castID,
                   COUNT(*) AS Cnt,
                   @r := IFNULL(@r, 0) + 1 AS r
          FROM     atable
          GROUP BY castID
          ORDER BY Cnt DESC
       ) AS s
WHERE r = 1
;
SELECT s.castID,
       s.Cnt
FROM   (SELECT @r := 0) AS x
CROSS JOIN
       (
          SELECT   castID,
                   COUNT(*) AS Cnt,
                   @r := @r + 1 AS r
          FROM     atable
          GROUP BY castID
          ORDER BY Cnt DESC
       ) AS s
WHERE s.r = 1
;