UNION ALL 2个表但不同的列

时间:2013-11-25 10:33:43

标签: mysql

我正试图从2个表中建立联盟。两者都包含相同的列,但其中一列除外。

例如:

表A:

姓名,电话

表B:

姓名,姓氏,其他姓名

我想从两个表中创建一个联合,并按姓氏列对它们进行排序。它工作正常。

但是,现在我想知道一行来自第一个表或第二个表。我的结果会有名字,姓氏,电话,其他姓名,但只有电话,在该栏中保留两个结果。

有没有办法保留两列,并在不存在时填充空值?

现在,这是我的问题:

SELECT id, name, surname ai, phone FROM tableA WHERE status = 0

UNION ALL

SELECT id, name, surname ai, other FROM signedupLocal WHERE status = 0

ORDER BY ai ASC

2 个答案:

答案 0 :(得分:2)

试试这个...

SELECT id, name, surname ai,phone, NULL  as other FROM tableA WHERE status = 0

UNION ALL

SELECT id, name, surname ai, NULL as phone, other FROM signedupLocal WHERE status = 0

ORDER BY ai ASC

答案 1 :(得分:2)

您可以为其他表中缺少的字段创建空白临时列,例如

SELECT id, name, surname, phone, '' as other FROM TableA WHERE status = 0 
UNION ALL 
SELECT id, name, surname,'' as phone,otherColumn FROM TableB WHERE status = 0