小编典典

mysql-无法使用select *获取所有列

sql

我有以下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


阅读 251

收藏
2021-04-28

共1个答案

小编典典

正如文档所说:

自然连接和使用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子句中命名,并且在输出中应该只出现一次,而不应该出现两次。

2021-04-28