mysql内部连接使用()字段含糊不清,但并不总是如此

mysql内部连接使用()字段含糊不清,但并不总是如此,mysql,join,ambiguous,Mysql,Join,Ambiguous,我最近更换了服务器,虽然我仍然在使用MySQL,但我认为它的版本和设置与我以前的不一样 最显著的影响是我的连接查询,本质上,一些使用内部连接的查询会抛出模糊的列错误,而在我的上一台服务器上,我相信代码会很好 table1 t1_id int primary key name text map t1_id int t2_id int table2 t2_id int primary key name text 表1与表2之间存在一对多关系。 通常,要从table1及其所有table2条目

我最近更换了服务器,虽然我仍然在使用MySQL,但我认为它的版本和设置与我以前的不一样

最显著的影响是我的连接查询,本质上,一些使用内部连接的查询会抛出模糊的列错误,而在我的上一台服务器上,我相信代码会很好

table1
t1_id int primary key
name text

map
t1_id int 
t2_id int 

table2
t2_id int primary key
name text
表1与表2之间存在一对多关系。 通常,要从table1及其所有table2条目中获取一行,我会这样做:

SELECT * FROM table1 
INNER JOIN map USING(t1_id) 
INNER JOIN table2 USING(t2_id) 
WHERE table1.t1_id=1;
然而,每次都会抛出一个含糊不清的列错误。唯一的办法是使用

SELECT * FROM table1 
INNER JOIN map ON(table1.t1_id=map.t1_id) 
INNER JOIN table2 ON(map.t2_id=table2.t2_id)
WHERE table1.t1_id=1;
除了版本5.1.56-community-log之外,我对服务器配置的了解不多,我相信它运行的是Linux(可能是Debian)


这是我的查询中的问题还是与我们使用的MySQL版本有关?

您是否尝试过以下方法:

SELECT table1.t1_id, table1.name FROM table1 
INNER JOIN map USING(t1_id) 
INNER JOIN table2 USING(t2_id) 
WHERE table1.t1_id=1;

您可以从任何表中获得任何所需的coulmn,只需别名(临时重命名)具有相同名称的coulmn:

SELECT table1.t1_id
     , table1.name   AS t1_name
     , table2.t2_id  
     , table2.name   AS t2_name
FROM table1 
  INNER JOIN map USING(t1_id) 
  INNER JOIN table2 USING(t2_id) 
WHERE table1.t1_id=1;

试过这个,效果很好。我的原始查询也是如此,直到最近才被打破。。。我将此标记为已接受,因为虽然这实际上没有修复任何问题,但我无法重现我之前看到的错误,因此这要么是人为错误,要么是在我处理此问题时有人去修复服务器。无论如何,谢谢你,不过我应该指出,连接两个表而只从一个表中获取数据并不是很有用