使用 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_Name
、Address
、City
、State
table2 有以下列:City
、State
、Zip_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 关键字