【发布时间】:2011-08-25 10:12:13
【问题描述】:
我最近更换了服务器,尽管我显然仍在使用 MySQL,但我认为它与我习惯的版本或设置方式不同。
最显着的影响是对我的 JOIN 查询,本质上是一些使用 INNER JOIN 的查询会引发模棱两可的列错误,而在我的最后一个服务器上,我确信代码会很好。
table1
t1_id int primary key
name text
map
t1_id int
t2_id int
table2
t2_id int primary key
name text
table1 与 table2 是一对多的关系。 通常,要从 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 版本有关?
【问题讨论】: