我正在使用此命令从所有这些表中获取C_DIV列。
SELECT DISTINCT C_DIV FROM TBL_TASK UNION
SELECT DISTINCT C_DIV FROM TBL_DATAMART_SUMMARY UNION
SELECT DISTINCT C_DIV FROM MMS_DIVI
以及更多其他表格。
从这个输出中我只得到C_DIV列,包含我需要的所有信息。
我想知道是否有某种方法可以获得每个使用表的列,所以不是只得到C_DIV列,而是得到C_DIV和TABLE_FROM
为例
C010 TBL_TASK
C017 TBL_TASK
C020 TBL_TASK
C025 TBL_DATAMART_SUMMARY
C027 TBL_DATAMART_SUMMARY
C028 TBL_DATAMART_SUMMARY
C034 TBL_DATAMART_SUMMARY
C035 TBL_TASK
C037 TBL_TASK
C050 MMS_DIVI
答案 0 :(得分:1)
是的,您可以将它添加到联合中:
SELECT DISTINCT C_DIV, 'TBL_TASK' as which FROM TBL_TASK UNION ALL
SELECT DISTINCT C_DIV, 'TBL_DATAMART_SUMMARY' FROM TBL_DATAMART_SUMMARY UNION ALL
SELECT DISTINCT C_DIV, 'MMS_DIVI' FROM MMS_DIVI;
请注意,我还将union
更改为union all
。不同的子查询之间不能有重复,因此没有理由承担删除重复项的开销。 Union all
效率更高。
答案 1 :(得分:0)
只是表名?我会在每个联盟中对它进行硬编码:
SELECT DISTINCT C_DIV , 'TBL_Task' as tablename FROM TBL_TASK UNION
SELECT DISTINCT C_DIV , 'TBL_DATAMARTSUMMARY' FROM TBL_DATAMART_SUMMARY UNION
SELECT DISTINCT C_DIV , 'MMS_DIVI' FROM MMS_DIVI