带有 INNER JOIN 和 WHERE 的 SQL 查询
Posted
技术标签:
【中文标题】带有 INNER JOIN 和 WHERE 的 SQL 查询【英文标题】:SQL query with INNER JOIN and WHERE 【发布时间】:2013-08-21 12:50:07 【问题描述】:尝试在查询中获取特定值时收到以下消息
"指定的字段可以引用多个表"
很明显,我正在尝试搜索多个表中存在的内容,但是如何正确执行此操作?
现在我有以下代码:
SELECT Table1.CustomerId, Table1.Address,
Table2.CustomerId, Table2.Telephone,
Table3.CustomerId, Table3.Notes
FROM (Table1 INNER JOIN Table2 ON Table1.CustomerId=TAble2.CustomerId)
INNER JOIN Table3 ON Table2.CustomerId=Table3.CustomerId
WHERE CustomerId = 0015
最后一句话是问题...有什么想法吗?
【问题讨论】:
【参考方案1】:错误信息非常清楚,WHERE
子句WHERE CustomerId = 0015
中的字段CustomerId
出现在两个表中。您必须确定要从哪个表中使用它; table1
还是 table2
?例如:
SELECT Table1.CustomerId, Table1.Address,
Table2.CustomerId, Table2.Telephone,
Table3.CustomerId, Table3.Notes
FROM (Table1 INNER JOIN Table2 ON Table1.CustomerId=TAble2.CustomerId)
INNER JOIN Table3 ON Table2.CustomerId=Table3.CustomerId
WHERE table1.CustomerId = 0015
【讨论】:
【参考方案2】:您应该在 WHERE 语句中指出 CustomerId
是哪个表
SELECT Table1.CustomerId, Table1.Address,
Table2.CustomerId, Table2.Telephone,
Table3.CustomerId, Table3.Notes
FROM (Table1 INNER JOIN Table2 ON Table1.CustomerId=TAble2.CustomerId)
INNER JOIN Table3 ON Table2.CustomerId=Table3.CustomerId
WHERE Table1.CustomerId = 0015
【讨论】:
【参考方案3】:您需要从需要 customerId 的表中初始化。
SELECT Table1.CustomerId, Table1.Address,
Table2.CustomerId, Table2.Telephone,
Table3.CustomerId, Table3.Notes
FROM (Table1 INNER JOIN Table2 ON Table1.CustomerId=TAble2.CustomerId)
INNER JOIN Table3 ON Table2.CustomerId=Table3.CustomerId
WHERE table1.CustomerId = 0015
【讨论】:
以上是关于带有 INNER JOIN 和 WHERE 的 SQL 查询的主要内容,如果未能解决你的问题,请参考以下文章
带有 WHERE 子句和 INNER JOIN 的 MySQL 更新查询不起作用
带有 WHERE 子句的 SQL INNER JOIN 到 LINQ 格式