防止计算列出现在结果集中

时间:2017-07-19 16:25:03

标签: mysql

假设以下查询:

SELECT meta_value as xyz, COUNT(*) AS count
  FROM wp_postmeta
  WHERE meta_key = "xyz" AND meta_value != ""
  GROUP BY meta_value
  HAVING count > 1

查询工作正常,但我的结果中不需要count列。如何排除count列?

我知道我可以使用子查询(如下所示),但我想知道是否有更好的方法。

SELECT xyz FROM (
  SELECT meta_value as xyz, COUNT(*) AS count
    FROM wp_postmeta
    WHERE meta_key = "xyz" AND meta_value != ""
    GROUP BY meta_value
    HAVING count > 1
) AS t

1 个答案:

答案 0 :(得分:3)

HAVING count > 1正在使用select中的别名计数...所以你可以用H count(*)替换HAVING子句中的别名(count),并从中删除count(*)和别名选择。因此它变得像

SELECT meta_value as xyz
... 
HAVING count(*) > 1

此处的运营顺序至关重要。在select之后工作因此它可以使用select中的别名,或者它可以在执行时运行计数。顺序相同。但是,group by永远不会在同一语句中使用select别名。