Mysql 不明确的列名错误

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;

我对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;
当我编写以下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?