【问题标题】:Using INNER JOIN to link mutliple columns from two tables使用 INNER JOIN 链接两个表中的多个列
【发布时间】: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 - 字段列表中的“城市”列不明确
  • 托尼,我的回答有所改变。

标签: mysql sql join xampp


【解决方案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 上。我非常感谢今晚的帮助。我在网上找不到任何关于我正在尝试做的事情的参考资料,而且我看到的所有示例都没有提到任何关于使用别名的内容。
  • 我会的。再次感谢您今晚的所有帮助!
猜你喜欢
  • 2015-05-16
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-26
  • 1970-01-01
相关资源
最近更新 更多