来自多个表的SQL没有连接

时间:2017-05-14 01:31:00

标签: sql oracle11g

我在oracle中有三个表包含今天,昨天和前天的数据,并且有一个列名称' date' 。我需要根据' date'找到包含昨天数据的表格的表格名称。柱。如何在没有加入的情况下进行查询,因为我不需要加入

2 个答案:

答案 0 :(得分:2)

您可以将表合并在一起。

例如(假设所有日期字段包含12 PM):

SELECT tablename
FROM (
    SELECT 'TABLE1' tablename, datefield
    FROM TABLE1
    UNION ALL
    SELECT 'TABLE2' tablename, datefield
    FROM TABLE2
    UNION ALL
    SELECT 'TABLE3' tablename, datefield
    FROM TABLE3)
WHERE datefield = TRUNC(SYSDATE - 1);

如果所有日期字段都不是12 PM,则调整为使用BETWEEN特定时间。

对于非常大的表,将WHERE语句移动到每个表UNION。

答案 1 :(得分:0)

如果你只想要表名,你知道有一个:

select (case when exists (select 1 from table1 where datefield = trunc(sysdate - 1))
             then 'table1'
             when exists (select 1 from table2 where datefield = trunc(sysdate - 1))
             then 'table2'
             when exists (select 1 from table3 where datefield = trunc(sysdate - 1))
             then 'table3'
        end) as whichtable
from dual;

这将返回符合您条件的第一个表。