自然加入不返回行

时间:2014-07-13 09:03:24

标签: php mysql sql join jointable

我有两张桌子 表A

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

1 个答案:

答案 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