【发布时间】:2013-08-26 04:35:23
【问题描述】:
我在这个网站http://www.sqlishard.com/Exercise练习基本的SQL
问题来了:
S5.0 - 内部联接
现在我们可以从单个表中提取数据并限定列 名字,让我们更进一步。 JOIN 语句允许我们 使用条件将多个表的行“连接”在一起以定义 它们如何相互匹配。从 FirstTable INNER 中选择 [列] 在 FirstTable.Id 上加入 SecondTable = SecondTable.FirstTableId
尝试使用 INNER JOIN 语法从 客户和订单表中的 CustomerId 列在 Orders 中 与客户中的 Id 列匹配。由于两个表都有一个 Id 列,您需要在 WHERE 子句中限定客户 ID 使用表名或表别名。
这是我的答案:
SELECT *
FROM Customers AS c
INNER JOIN Orders AS o ON c.ID = o.ID
WHERE o.CustomerID = c.ID
网站说我错了?谁能解释我哪里出错了?
编辑:我现在看到我不需要 WHERE 子句,但问题说明..
您需要将 WHERE 子句中的客户 ID 限定为 表名或表别名。
因此我感到困惑。还是谢谢。
【问题讨论】:
-
您的
WHERE子句是多余的。加入的ON部分就足够了 -
@KenKeenan - 再次检查,
ON子句不正确,WHERE子句包含正确的谓词。 -
怎么回事?根据问题,我需要在 WHERE 子句中限定客户 ID?
-
@MatBailie,正如问题所述,“由于两个表都有一个 Id 列”,我假设
ON c.ID = o.ID没问题。但是这个问题的措辞非常糟糕,指的是不需要任何内容的WHERE子句...... -
@DavidFolksman - 这个问题措辞不当。它试图回顾您在之前的问题中需要做的事情。
标签: sql