从两个具有相同id的表中选择所有行

ki0zmccv  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(278)

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

TABLE1 
user_id 
value1
value2

TABLE2 
user_id
value3
value4

我想进行一个查询,以获取表1和表2中用户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

但是我得到一行中的所有值,我想从用户id=1的那两个表中得到所有不同的行。。
谢谢你的帮助。

bqucvtff

bqucvtff1#

使用 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列包含 value1 以及 value2 (如果行来自 table1 ),或 value3 以及 value4 (如果行来自 table2 ).
只有当 value1 以及 value3 (分别。 value2 以及 value4 )具有相同的数据类型(和长度)。如果不是这样,那么最好在结果集中有单独的列:

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

相关问题