我有以下2个表t1,t2
CREATE TABLE t1 ( id INT PRIMARY KEY ); CREATE TABLE t2 ( id INT PRIMARY KEY ); INSERT INTO t1 VALUES (1),(2),(3); INSERT INTO t2 VALUES (2),(3),(4);
我在跑步
select * from t1 left join t2 using(id);
结果:
+----+ | id | +----+ | 1 | | 2 | | 3 | +----+
在运行脚本时:
select t1.id, t2.id from t1 left join t2 using(id);
+----+------+ | id | id | +----+------+ | 1 | NULL | | 2 | 2 | | 3 | 3 | +----+------+
select 应该返回所有列,所以,为什么当我使用select 时却没有得到2行?
注意:我正在使用Mysql
正如文档所说:
自然连接和使用USING的连接(包括外部连接变体)将根据SQL:2003标准进行处理: NATURAL连接的冗余列不会出现。考虑以下这组语句:
自然连接和使用USING的连接(包括外部连接变体)将根据SQL:2003标准进行处理:
NATURAL连接的冗余列不会出现。考虑以下这组语句:
CREATE TABLE t1 (i INT, j INT); CREATE TABLE t2 (k INT, j INT); INSERT INTO t1 VALUES(1, 1); INSERT INTO t2 VALUES(1, 1); SELECT * FROM t1 JOIN t2 USING (j);
列j在USING子句中命名,并且在输出中应该只出现一次,而不应该出现两次。