这可能是两个问题。使用mysql / mariadb。 我正在尝试查找某个字段的重复项。
SELECT field1, COUNT(*) c FROM table1 WHERE c > 1 GROUP BY field1;
Error Code: 1054. Unknown column 'c' in 'where clause'
如果我将别名放在引号中,它可以工作,但找不到重复项:
SELECT field1, COUNT(*) 'c' FROM table1 WHERE 'c' > 1 GROUP BY field1;
为了澄清起见,如果我不使用WHERE子句,它的确会找到重复项(> 1)。
答案 0 :(得分:1)
您需要一个having
子句,而不是where
子句:
SELECT field1, COUNT(*) as c
FROM table1
GROUP BY field1
HAVING c > 1 ;
HAVING
过滤 聚合。 WHERE
之前的过滤器。除了所有其他事项,c
的值在聚合之前未知。 (其他情况是WHERE
子句中根本不允许使用列别名。)
答案 1 :(得分:0)
作为对戈登答案的补充,如果您首先在单独的子查询中计算计数,那么WHERE
子句 是适当的:
SELECT field1, cnt
FROM
(
SELECT field1, COUNT(*) AS cnt
FROM table1
GROUP BY field1
) t
WHERE cnt > 1;
或者,您可以将WHERE
逻辑移到HAVING
子句中,避免使用子查询。