Mysql 不明确的列名错误
我对2个表中的select命令有问题 因此,我在表1中列出了:Mysql 不明确的列名错误,mysql,sql,sqlite,select,Mysql,Sql,Sqlite,Select,我对2个表中的select命令有问题 因此,我在表1中列出了: table1_id = int pk; table1_name; table1_surname; table1_age; table1_address; table1_city; 和表2,其中: table2_id int pk table1_id int fk references table1.table1_id; table3_id; table2_description;
table1_id = int pk;
table1_name;
table1_surname;
table1_age;
table1_address;
table1_city;
和表2,其中:
table2_id int pk
table1_id int fk references table1.table1_id;
table3_id;
table2_description;
当我编写以下select语句时,我得到了含糊不清的列名table1.table1\u name错误:
SELECT table2.table2_id, table2.table1_id, table1.table1_name, table2.table2_description
from table1,
table2 inner join
table1
on table2.table1_id = table1.table1_id;
老实说,我不明白这是怎么回事?从
中删除表1,
之后的(混合了旧类型的“逗号”和现代连接语法)
使用如下所示:
SELECT t2.table2_id, t2.table1_id, t1.table1_name, t2.table2_description
FROM table2 t2 INNER JOIN table1 t1 ON ( t2.table1_id = t1.table1_id ) ;
若我理解正确的话,你们在下面这行有问题
from table1, table2
在上述代码中,您使用的是表2
和表1
之间的交叉联接,这在您的情况下是不需要的
更改您的查询,如下所示
SELECT table2.table2_id, table2.table1_id, table1.table1_name, table2.table2_description
from table2
inner join table1 on table2.table1_id = table1.table1_id;
切勿在FROM
子句中使用逗号。始终使用正确、明确的JOIN
语法:
select t2.table2_id, t2.table1_id, t1.table1_name, t2.table2_description
from table1 t1 join
table2 t2
on t2.table1_id = t1.table1_id;
查询的问题是,由于逗号,您有两个对表1
的引用。你已经两次提到这张桌子了。因此,当您引用该列时,引擎不知道您所指的是什么。您的版本相当于:
from table1 cross join
table2 join
table1
on table2.table1_id = table1.table1_id
表1
出现两次,因此对它的任何引用都是不明确的
您会注意到,我还向查询中添加了表别名。表别名使查询更易于编写和阅读。“老实说,我不明白它到底出了什么问题?”请尝试Google或Stackoverflow搜索。我确信其他人以前也有此错误。从表和联接表1?