SELECT
cat.CategoryID as CategoryID,
count(p.ProductID) as CountProducts
FROM
Category as cat
LEFT JOIN Products as p on p.CategoryID IN
(SELECT CategoryID FROM Category as cd
WHERE cd.ParrentCategoryID = '876')
WHERE
CategoryID = '876'
ORDER by Name
我们得到错误-“ where子句不明确的列’CategoryID’”。
告诉我请怎么会好?
您得到的错误告诉CategoryID
您WHERE
子句中的列是不明确的,这意味着系统存在标识适当列的问题,因为存在多个CategoryID
列。
为了解决此问题,请使用别名指定要用于WHERE
子句的列:
SELECT cat2.CategoryID AS CategoryID
,cat2.Name AS CategoryName
,COUNT(p.ProductID) AS CountProducts
FROM Category AS cat
INNER JOIN Category AS cat2 ON cat2.ParrentCategoryID = cat.CategoryID
INNER JOIN Products AS p ON p.CategoryID = cat2.CategoryID
WHERE cat.CategoryID = '876'
GROUP BY cat2.CategoryID, cat2.Name
ORDER BY cat2.Name
我还更改了查询以获取相同的结果,但我没有使用LEFT JOIN
+IN
子句+子查询的组合,而是使用了INNER JOIN
子句。使用此查询,您只需定义CategoryID
一次所需的内容,它将自动获取每个子类别。
我不确定您的查询是否正确运行,因为您正在使用该COUNT
功能,而没有按CategoryID
…分组结果
希望这会帮助你。
问题内容: 我有两个要加入的表。 我想要类别表中的所有类别以及用户在category_subscriptions表中订阅的所有类别。 基本上这是我到目前为止的查询: 这很好用,但是我想在查询的末尾添加一个where子句,然后从本质上使它成为一个内部/等参连接。 如何仅使用一个查询获取所有类别以及特定用户订阅的所有类别? category_id是类别表和user_category_subscript
问题内容: 是否可以执行这样的mysql查询? 我需要在一般的“ where”子句中使用子查询的结果。 问题答案: 您可以将其包装在子查询中,如下所示:
本章提供了有关如何使用JDBC应用程序从表中选择记录的示例。 这将在从表中选择记录时使用WHERE子句添加其他条件。 在执行以下示例之前,请确保您具备以下示例 - 要执行以下示例,您可以使用实际用户名和密码替换用户名和密码。 您的MySQL或您正在使用的任何数据库已启动并正在运行。 所需的步骤 (Required Steps) 使用JDBC应用程序创建新数据库需要以下步骤 - Import the
问题内容: 我在mysql中的“ where in”子句中遇到问题,我无法弄清楚出了什么问题。所以我有两张桌子… 1)座位 (int)seat_id 2)寄存器 (int)register_id (varchar)seat_ids-以逗号分隔的席位,例如102,103,104 因此,我要获取匹配结果的查询是 有人可以找出问题所在吗?谢谢, 问题答案: 要求列表是文字列表,而不是逗号分隔的字符串。用
问题内容: 此查询出了什么问题: 它在没有该子句的情况下起作用。我似乎忘记了我的SQL。 问题答案: MySQL INSERT语法不支持WHERE子句,因此您的查询将失败。假设您的列是唯一键或主键: 如果您要插入ID为1的新行,则应使用: 如果您尝试更改ID为1的现有行的weight / desiredWeight值,则应使用: 如果需要,还可以使用INSERT .. ON DUPLICATE K
问题内容: 假设我有这张桌子 我想返回第一行,其中所有先前现金的总和大于某个值: 因此,例如,如果我要返回第一行,其中所有先前现金的总和都大于500,则应返回到第3行 如何使用mysql语句执行此操作? 使用 不起作用 问题答案: 您只能在HAVING子句中使用聚合进行比较: 该子句要求您定义GROUP BY子句。 要获得第一行,其中所有先前现金的总和都大于某个值,请使用: 由于聚合函数发生在子查