col1 col2 col3 col4 col5
1 007 .. .. ..
2 006 .. .. ..
3 008 .. .. ..
表B
col1 col7 col8 col9 many columns
2 A AA
3 B BB
SELECT col2,col8,col9 FROM table A natural join table B
不会返回任何行
两个表中的col1
具有相同的名称,数据类型,两者都是主键
我也试过
SELECT col2,col8,col9 FROM table A natural join table B using (col1)
以上得到#1064错误。
SELECT col8,col2,col9 FROM table A join table B ON A.col1=B.col1
上面的返回所需的结果。 为什么自然连接不返回任何行?
如果我使用
SELECT col2,col8,col9
FROM table A
JOIN table B
LIMIT 0 , 30
我得到以下结果
col8 col2 col9
A 007 AA
B 007 BB
A 006 AA
B 006 BB
A 008 AA
B 008 BB
答案 0 :(得分:2)
您收到此错误,因为自然连接不需要using子句。自然连接自动命名所有列,这两列存在于两个表中。
您必须删除USING子句:
SELECT col2,col8,col9 FROM table A NATURAL JOIN table B
如果要命名列(而不是ON条件),应该用于连接,也可以将连接与using子句组合使用。
SELECT col2,col8,col9 FROM table A JOIN table B USING (col1)
当你刚加入时,没有任何条件,你将获得两个表的Cross Join。