Sql 创建临时列时WHERE子句出现问题

Sql 创建临时列时WHERE子句出现问题,sql,mariadb,Sql,Mariadb,我已经编写了一个查询,创建了一个新的临时行,显示id的频率为,我需要删除任何低于筛选要求频率(4)的项。代码按计划工作,直到我添加下面的where子句。您不能在通常情况下添加where子句的原因是什么 SELECT RecipeTitle, COUNT(recipes.RecipeID) AS ingredientsNeeded FROM recipes INNER JOIN recipe_ingredients ON recipe_ingredients.RecipeI

我已经编写了一个查询,创建了一个新的临时行,显示id的频率为,我需要删除任何低于筛选要求频率(4)的项。代码按计划工作,直到我添加下面的where子句。您不能在通常情况下添加where子句的原因是什么

  SELECT RecipeTitle, COUNT(recipes.RecipeID) AS ingredientsNeeded FROM recipes 
         INNER JOIN recipe_ingredients ON recipe_ingredients.RecipeID = recipes.RecipeID 
              GROUP BY recipes.RecipeID 
              ORDER BY ingredientsNeeded ASC
返回

Calzone | 3 
Hot dog | 2

您将得到以下错误:

您的SQL语法有错误。。。请查看手册,以了解在以下位置附近要使用的正确语法

您应该使用HAVING子句对计数进行断言:

SELECT
    r.RecipeTitle,                          -- potentially OK to select this, see below
    COUNT(r.RecipeID) AS ingredientsNeeded
FROM recipes r
INNER JOIN recipe_ingredients ri
    ON ri.RecipeID = r.RecipeID
GROUP BY
    r.RecipeID 
HAVING
    ingredientsNeeded < 4
ORDER BY
    ingredientsNeeded;

请注意,您是通过RecipeID进行聚合的,因此从技术上讲,您只能选择RecipeID或任何聚合。但是,如果RecipeID是recipes表的主键,则允许选择RecipeTle。

我认为您的查询没有问题,除非您的内部联接没有找到匹配项或没有满足WHERE条件的行。除非没有明确的问题描述,否则代码按计划工作。您有什么具体问题?为了清晰起见进行了编辑。谢谢您的编辑。为了便于将来参考,当您遇到错误时,您应该始终在帖子中包含特定的错误消息。您要求我们提供免费帮助以解决您的问题,因此向我们提供您所需的所有相关信息以使其尽可能简单符合您的最大利益。
SELECT
    r.RecipeTitle,                          -- potentially OK to select this, see below
    COUNT(r.RecipeID) AS ingredientsNeeded
FROM recipes r
INNER JOIN recipe_ingredients ri
    ON ri.RecipeID = r.RecipeID
GROUP BY
    r.RecipeID 
HAVING
    ingredientsNeeded < 4
ORDER BY
    ingredientsNeeded;