从2个表中选择所有具有相同ID的行

时间:2020-06-15 20:34:16

标签: mysql sql join select union

我的数据库中有两个表,如下所示:

TABLE1 
user_id 
value1
value2

TABLE2 
user_id
value3
value4 

我想进行查询以获取TABLE1和TABLE2中所有具有user_id = 1的行。

我已经完成了:

SELECT TABLE1.user_id,TABLE1,value1, TABLE1.value2, TABLE2.value3, TABLE2.value4
 FROM TABLE1 
INNER JOIN TABLE2 
ON TABLE1.user_id = TABLE2.user_id 
WHERE TABLE.user_id = 1

但是我将所有值都放在一行中,我想从user_id = 1的那两个表中获取所有不同的行。

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

使用union all

select 't1' which, user_id, value1, value2 from table1 where user_id = 1
union all
select 't2', user_id, value3, value4 from table2 where user_id = 1

您没有完全指定要获取的结果集。这将为您提供由4列组成的数据集,其中第一列包含在其中找到用户的表的名称。第3列和第4列包含value1value2(如果该行来自table1)或value3value4(如果该行来自{{ 1}})。

仅当table2value1(分别为value3value2)具有相同的数据类型(和长度)时,此方法才有效。如果不是这种情况,那么最好在结果集中有单独的列:

value4