将来自不同列的行值合并到彼此重叠的一列:MySQL

Merge Row values from different columns to one column on top of each other: MySQL

我有 Table1 个列:

Fname,Sname

Table 2 列:

Fname,Lname

现在,在一个查询中,我想从这两个 table 中获取所有值(名字和姓氏 [Sname in table 1 is Lname])和 return 到一列。 基本上我想创建列来获取参与者列表,其中包括来自这两个 table 的每个人。
可能吗?
table 都通过第三个 table.

间接连接

您可以使用 UNION ALL 将给出来自两个 table 的所有行。

SELECT 
  Fname,
  Sname,
  CONCAT(Fname,Sname) AS FSname
FROM table1
UNION ALL
SELECT 
  Fname,
  Lname,
  CONCAT(Fname,Lname) 
FROM table2;

列名取自第一个SELECT。 如果您使用 UNION 而不是 table2 中与 table1 重复的 UNION ALL 行将被省略,但它可以 运行 更慢,因为值有待比较。
您可以在两个 table 上使用第三个 table 和 LEFT JOIN,并使用 COALESCE,其中 returns 第一个不为空的参数。

SELECT 
COALESCE(t1.Fname,t2.Fname),
COALESCE(t1.Sname,t2.Lname),
CONCAT(
  COALESCE(t1.Fname,t2.Fname),
  COALESCE(t1.Sname,t2.Lname)
      ) AS FSname
FROM third_table t3
LEFT JOIN table1 t1
ON t1.id = t3.id
LEFT JOIN table2 t2 
ON t2.id = te.id;