你能帮我吗?我花了大约2个小时来了解问题所在,但仍然没有。


  SQLSTATE [42S21]:列已存在:1060重复的列名
  'ID'


select count(*) as aggregate
from (
    select `cities`.*,
        `cities`.`id` as `id`,
        `cities`.`country_id` as `country_id`,
        `cities`.`name` as `name`,
        `cities`.`alias` as `alias`,
        `cities`.`active_frontend` as `active_frontend`
    from `cities`
    where (
            cities.alias in (
                select `alias`
                from `cities`
                group by `alias`
                having COUNT(`alias`) > 1
                )
            )
    ) count_row_table


请不要问我到底是怎么回事。该查询的最大部分由Laravel生成。

如果我删除此部分:


  哪里
  (cities.alias IN(从alias GROUP BY cities中选择alias
  COUNT(alias)> 1))


会的。但是我需要这部分。

最佳答案

问题出在cities.*上。

但是您可以将查询简化为:

select sum(cnt) as cnt
from (
    select COUNT(alias) as cnt
    from cities
    group by alias
    having COUNT(alias) > 1
    ) t


并避免重新读取表,因为最后,您所需要的就是别名超过一行的总行数。

关于mysql - 使用聚合,子查询和分组查询不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46328433/

10-15 21:10