可以在WHERE子句中使用MySQL查询函数吗?

时间:2011-12-28 21:11:25

标签: mysql

在MySQL WHERE子句中使用派生值不起作用。有没有办法模拟这种行为?以下是由于WHERE count > 5行而失败的示例查询:

SELECT
    title,
    company_id,
    count( id ) as count
FROM
    table
WHERE
    count > 5
GROUP BY
    title,
    company_id

3 个答案:

答案 0 :(得分:8)

汇总不能在WHERE中使用,而是在HAVING中使用。您需要添加GROUP BY子句。

SELECT
    title,
    company_id,
    count( id ) as count
FROM
    table
GROUP BY title, company_id
HAVING count > 5

答案 1 :(得分:5)

如果您想使用汇总函数,可以使用having子句,如here所述。

  

HAVING子句已添加到SQL,因为WHERE关键字不能与聚合函数一起使用。

SELECT
  title,
  company_id,
  count( id ) as count
FROM
  table
GROUP BY 
  title, company_id
HAVING
  count > 5

<强>更新 在这种情况下,您必须使用HAVING子句,但我想在使用HAVING子句时要记住一件事。 MySQL documentation声明:

  

HAVING子句几乎在最后一次应用,就在项目发送到客户端之前,没有优化。 (在HAVING之后应用LIMIT。)

所以,正如同一文件中所述:

  

不要将HAVING用于WHERE子句中的项目。

答案 2 :(得分:1)

您无法在聚合列上使用WHERE

试试这个:

    SELECT
        title,
        company_id,
        count( id ) as cnt
    FROM
        table
    GROUP BY title, company_id
    HAVING
        cnt > 5