Mysql 如何从具有不同字段名的两个不同表中获取数据

Mysql 如何从具有不同字段名的两个不同表中获取数据,mysql,sql,Mysql,Sql,我试图从两个不同的表中获取数据,这两个表具有不同的字段名称,例如 表1 user_id user_grp_id 1 1 2 1 表2 cust_id cust_grp_id 1 2 2 2 现在我正在使用这样的查询 Select * from table 1 Union All select * from table 2 Array ( [0] => Array ( [user_id] => 1

我试图从两个不同的表中获取数据,这两个表具有不同的字段名称,例如

表1

user_id  user_grp_id
1         1
2         1
表2

cust_id cust_grp_id
1       2
2       2
现在我正在使用这样的查询

Select * from table 1 Union All select * from table 2
Array
(
[0] => Array
    (
     [user_id] => 1
     [user_grp_id] => 1
)

[1] => Array
    (
    [user_id] => 2
    [user_grp_id] => 1
)
[2] => Array
    (
     [user_id] => 1
     [user_grp_id] => 2
)

[3] => Array
    (
    [user_id] => 2
    [user_grp_id] => 2
)
它是这样显示结果的

Select * from table 1 Union All select * from table 2
Array
(
[0] => Array
    (
     [user_id] => 1
     [user_grp_id] => 1
)

[1] => Array
    (
    [user_id] => 2
    [user_grp_id] => 1
)
[2] => Array
    (
     [user_id] => 1
     [user_grp_id] => 2
)

[3] => Array
    (
    [user_id] => 2
    [user_grp_id] => 2
)
现在我们可以看到,第二个表的结果也在第一个表的字段名下,但是我想要这样的结果

Array
(
[0] => Array
    (
     [user_id] => 1
     [user_grp_id] => 1
)

[1] => Array
    (
    [user_id] => 2
    [user_grp_id] => 1
)
[2] => Array
    (
     [cust_id] => 1
     [cust_grp_id] => 2
)

[3] => Array
    (
    [cust_id] => 2
    [cust_grp_id] => 2
)
我怎样才能达到这样的效果

编辑

答案中给出的查询结果为

Array
(
[0] => Array
    (
     [user_id] => 1
     [user_grp_id] => 1
     [cust_id] => NULL
     [cust_grp_id] => NULL
)

[1] => Array
    (
    [user_id] => 2
    [user_grp_id] => 1
    [cust_id] => NULL
    [cust_grp_id] => NULL
)
[2] => Array
    (
     [user_id] => NULL
     [user_grp_id] => NULL
     [cust_id] => 1
     [cust_grp_id] => 2
)

[3] => Array
    (
    [user_id] => NULL
    [user_grp_id] => NULL
    [cust_id] => 2
    [cust_grp_id] => 2
)

如果不同的字段具有不同的名称,则不应在同一位置返回它们。可以使用null值填充空插槽。 所以你可以这样做:

SELECT user_id, user_grp_id, NULL AS cust_id, NULL AS cust_grp_id FROM table1
UNION ALL
SELECT NULL AS user_id, NULL AS user_grp_id, cust_id, cust_grp_id FROM table2

sqlfiddle

如果不同的字段具有不同的名称,则不应将它们返回到同一位置。可以使用null值填充空插槽。 所以你可以这样做:

SELECT user_id, user_grp_id, NULL AS cust_id, NULL AS cust_grp_id FROM table1
UNION ALL
SELECT NULL AS user_id, NULL AS user_grp_id, cust_id, cust_grp_id FROM table2

sqlfiddle

很抱歉,它没有显示我想要的结果,前两个数组与我在问题中的结果相同,但后两个数组显示具有相同字段名的空值,即
user\u id
user\u grp\u id
如果这些字段的值为
null
,会有什么问题?不管them@LorenzoMarcon我不知道是什么问题,我试着用这种方法,但什么也没发生。你能说得更具体些吗?什么事情没有发生?@rikpg我可以通过两个查询得到结果,但我想知道如何通过一个查询得到这个结果。抱歉,它没有显示我想要的结果,前两个数组与我在问题中的结果相同,但后两个数组显示具有相同字段名的空值,即
user\u id
user\u grp\u id
如果这些字段的值为
null
,会出现什么问题?不管them@LorenzoMarcon我不知道是什么问题,我试着用这种方法,但什么也没发生。你能说得更具体些吗?什么事没有发生?@rikpg我可以通过两个查询得到结果,但是我想知道我如何用一个单一的查询得到这个答案你是否得到答案不,我还没有得到答案你看到这个链接了吗?是的,我看到了,是的,它给了我答案,但有两个额外的字段,即带有空值的字段。如果你没有清楚显示结果,请..你得到答案了吗..不,我没有得到答案但是,你看到这个链接了吗?是的,我看到了,是的,它给了我答案,但是有两个额外的字段,即带有空值的字段。如果你没有清楚地显示结果,请。。