【问题标题】:#1111 - Invalid use of group function: MAX COUNT doesn't work with MYSQL5.5#1111 - 组函数的无效使用:MAX COUNT 不适用于 MYSQL5.5
【发布时间】:2016-08-31 03:49:13
【问题描述】:

我有一张表userInteret,我想选择用户之间的最大通信量。 我试过这个查询:

SELECT nomInteretUser,idUser,COUNT(nomInteretUser) FROM `userInteret` 
WHERE nomInteretUser IN('piano','flute','chien') GROUP BY idUser

但是当我尝试这个时,我想要这个 COUNT 的 MAX:

SELECT MAX(COUNT(nomInteretUser))FROM userInteret 
WHERE nomInteretUser IN('piano','flute','chien') GROUP BY idUser;

总是出错:

MySQL 回复:文档

1111 - 组函数使用无效

【问题讨论】:

  • 试试这个查询:SELECT MAX(t.total) FROM (SELECT COUNT(nomInteretUser) total FROM userInteret WHERE nomInteretUser IN ( 'piano', 'flute', 'chien' ) GROUP BY idUser ) t

标签: mysql function group-by


【解决方案1】:
SELECT idUser,COUNT(nomInteretUser) counts 
FROM userInteret
WHERE nomInteretUser IN('piano','flute','chien') 
GROUP BY idUser
ORDER BY counts DESC LIMIT 1

【讨论】:

  • 感谢 Miahia,现在我不想将结构“IN('piano','flute','chien')”更改为动态数组????
  • @user3070123 如果要动态查询,再问一个问题,不要移门柱,可能会涉及到一些php
【解决方案2】:
SELECT MAX(num) FROM (
    SELECT nomInteretUser,idUser,COUNT(nomInteretUser) as num FROM userInteret WHERE nomInteretUser IN('piano','flute','chien') GROUP BY idUser
) AS MYalias

【讨论】:

  • 我有这个错误:#1248 - 每个派生表都必须有自己的别名
  • 有些系统要求内部查询有自己的别名。在这种情况下,只需在该查询的末尾添加“AS {anyname}”。我更改了答案以反映这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-14
  • 1970-01-01
  • 2021-11-21
  • 1970-01-01
  • 2012-07-20
相关资源
最近更新 更多