mysql内部连接使用()字段含糊不清,但并不总是如此
我最近更换了服务器,虽然我仍然在使用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条目
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;
试过这个,效果很好。我的原始查询也是如此,直到最近才被打破。。。我将此标记为已接受,因为虽然这实际上没有修复任何问题,但我无法重现我之前看到的错误,因此这要么是人为错误,要么是在我处理此问题时有人去修复服务器。无论如何,谢谢你,不过我应该指出,连接两个表而只从一个表中获取数据并不是很有用