Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.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中的简单复杂查询_Mysql_Sql - Fatal编程技术网

mysql中的简单复杂查询

mysql中的简单复杂查询,mysql,sql,Mysql,Sql,我在mysql中编写了一个简单复杂的查询: SELECT bcode, MAX(c) from (SELECT bcode, COUNT(*) as c FROM register GROUP BY bcode) 但我有以下错误,为什么 1.需要一个表达式。(靠近)(“位置27处”) 2.意外标记。(靠近)(“位置27处”) 3.这种类型的子句以前被解析过。(在位置28的“SELECT”附近) 4.意外的结束括号。(位置100附近的“)”FROM子句中的所有子查询都需要MySQL中

我在mysql中编写了一个简单复杂的查询:

SELECT bcode, MAX(c)
from (SELECT bcode, COUNT(*) as c 
  FROM register 
  GROUP BY bcode)
但我有以下错误,为什么

1.需要一个表达式。(靠近)(“位置27处”)

2.意外标记。(靠近)(“位置27处”)

3.这种类型的子句以前被解析过。(在位置28的“SELECT”附近)


4.意外的结束括号。(位置100附近的“)”

FROM子句中的所有子查询都需要MySQL中的别名:

SELECT bcode, MAX(c)
FROM (SELECT bcode, COUNT(*) as c 
      FROM register 
      GROUP BY bcode
     ) c;
注意:上面的查询返回一个不确定的值
bcode
以及最大计数。它使用MySQL的(mis)功能,允许在聚合查询中选择
SELECT
中未聚合的列。(我可以注意到SQLite可以识别上述语法并做您想做的事情,但在我看来,这只是一个讨厌的东西。)

我怀疑这是你想要的。你可能打算:

SELECT bcode, COUNT(*) as c 
FROM register 
GROUP BY bcode
ORDER BY c DESC
LIMIT 1;
如果您希望所有
bcodes
具有最大值,我建议

SELECT c, GROUP_CONCAT(bcode)
FROM (SELECT bcode, COUNT(*) as c 
      FROM register 
      GROUP BY bcode
     ) c
ORDER BY c DESC
LIMIT 1;
这将它们全部放在逗号分隔的列表中的一行上。还有其他方法,但我认为这是MySQL中最简单的方法(几乎所有其他数据库都支持
rank()
,这使它更简单)