我的数据库中有两个表,如下所示:
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的那两个表中获取所有不同的行。
感谢您的帮助。
答案 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列包含value1
和value2
(如果该行来自table1
)或value3
和value4
(如果该行来自{{ 1}})。
仅当table2
和value1
(分别为value3
和value2
)具有相同的数据类型(和长度)时,此方法才有效。如果不是这种情况,那么最好在结果集中有单独的列:
value4