假设我有两张桌子。
FIRST_TAB
ID NAME
===========
1 a
2 b
和
SECOND_TAB
ID NAME
===========
3 c
4 d
有没有办法制作视图/新表,以便我可以像这样进行查询? (我的真实数据有大约23个表,没有重复,所有这些表都有相同的列。)
SELECT * FROM NEWVIEW;
ID NAME OPTIONAL
==================
1 a FIRST_TAB
2 b FIRST_TAB
3 c SECOND_TAB
4 d SECOND_TAB
答案 0 :(得分:5)
使用:
CREATE OR REPLACE VIEW newview AS
SELECT a.id,
a.name,
'FIRST_TAB' AS optional
FROM FIRST_TAB a
UNION ALL
SELECT b.id,
b.name,
'SECOND_TAB' AS optional
FROM FIRST_TAB b
可选列是一个静态字符串,您可以在其中指定所需内容,假设没有特殊字符。
UNION ALL
比使用UNION
更快,因为它不会删除重复项。如果您需要删除重复项,只需删除“ALL”关键字(我相信optional
列值将从最早出现重复项的联合语句中获取。
参考: