使用 INNER JOIN 链接两个表中的多个列

Posted

技术标签:

【中文标题】使用 INNER JOIN 链接两个表中的多个列【英文标题】:Using INNER JOIN to link mutliple columns from two tables 【发布时间】:2016-03-31 05:30:48 【问题描述】:

我正在使用 XAMPP,我有两个表,customers 和 table2。

客户有以下列:Customer_NameAddressCityState table2 有以下列:CityStateZip_Code

创建这些表是为了实现第三次规范化。使用单个 INSERT 语句将数据加载到每个表中没有问题,但是我无法使用 INNER JOIN 来组合表并运行我的查询。到目前为止,这是我所拥有的:

SELECT Customer_Name, Address, City, State FROM customers 
INNER JOIN table2 ON customers.City=table2.City
INNER JOIN table2 ON customers.State=table2.State;

返回的错误是

#1066 - 不是唯一的表/别名:'table2'

任何帮助将不胜感激。

【问题讨论】:

table2使用两个不同的别名。 这看起来就像在单个连接的ON 子句中需要AND 的两个条件。请记住,加入 ON 子句(也称为 ORDER BY, GROUP BY)不一定是列之间的 1:1 相等匹配。它可以是任何返回真值的任意表达式。 我尝试在两个条件之间使用“AND”,但它显示 #1052 - 字段列表中的“城市”列不明确 托尼,我的回答有所改变。 【参考方案1】:

SELECT c.Customer_Name, c.Address, c.City, c.State FROM customers c
INNER JOIN table2 t2 ON c.City=t2.City and c.State = t2.State

有效吗?

【讨论】:

返回 #1052 - 字段列表中的“城市”列不明确 那行得通。我必须将 zip_code 添加到查询中,但这不是问题。为什么您必须更改为 c.Customers、c.state 等? c 用作引用表Customers 的别名。如果没有别名,SQL 将不知道从哪个表中获取数据。 那么 zip_code 实际上在 table2 上。我非常感谢今晚的帮助。我在网上找不到任何关于我正在尝试做的事情的参考资料,而且我看到的所有示例都没有提到任何关于使用别名的内容。 我会的。再次感谢您今晚的所有帮助!

以上是关于使用 INNER JOIN 链接两个表中的多个列的主要内容,如果未能解决你的问题,请参考以下文章

mysql 里面JOIN 和 INNER JOIN 区别是啥

MySQL 连接的使用:语法及案例剖析INNER JOINLEFT JOINRIGHT JOIN

父表中的两个外键引用同一个子表。如何构造 INNER JOIN?

SQLServer中 join 跟inner join的区别是啥?

SQL JOINSQL INNER JOIN 关键字SQL LEFT JOIN 关键字SQL RIGHT JOIN 关键字SQL FULL JOIN 关键字

使用 INNER JOIN 从两个表中删除数据