gpt4 book ai didi

mysql - SQL : full outer join (ambitious column name)

转载 作者:太空宇宙 更新时间:2023-11-03 11:43:31 25 4
gpt4 key购买 nike

我有两个表,t1 和 t2。

-- t1
id name address
1 Tim A
2 Marta B

-- t2
id name address
1 Tim A
3 Katarina C

如果我对 t2 执行 t1 完全外部连接

SELECT * FROM t1
LEFT JOIN t2 ON t1.id = t2.id
UNION ALL
SELECT * FROM t1
RIGHT JOIN t2 ON t1.id = t2.id

但是,结果有宏idnameaddress。我如何重命名它以便我没有重复的列名?


尝试:

SELECT name, address FROM

(SELECT * FROM t1
LEFT JOIN t2 ON t1.id = t2.id
UNION ALL
SELECT * FROM t1
RIGHT JOIN t2 ON t1.id = t2.id) as derived_table;

返回:错误 - 重复的列名“name”。

最佳答案

放弃 SELECT 列表中的 *

指定要返回的表达式列表。并且用表名或更短的表别名来限定所有列引用。

并为表达式分配一个别名,这将是结果集中列的名称。

此外,显示的查询不等同于 FULL OUTER JOIN。

如果目标是从 t1 返回所有行,并且还从 t2 返回 t1 中不存在匹配行的行,我会做这样的事情......

  SELECT t.id            AS t_id
, t.name AS t_name
, t.addr AS t_addr
FROM t1 t
UNION ALL
SELECT s.id
, s.name
, s.addr
FROM t2 s
LEFT
JOIN t1 r
ON r.id = s.id
WHERE r.id IS NULL

关于mysql - SQL : full outer join (ambitious column name),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40139394/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com