我最近更换了服务器,虽然我显然仍在使用 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 版本有关?