我在oracle中有三个表,其中包含今天、昨天和前天的数据,并且有一个名为'date‘的列。我需要找到包含昨天基于'date‘列的数据的表的表名。由于不需要连接,如何在没有连接的情况下进行查询
发布于 2017-05-14 11:39:11
您可以将这些表合并在一起。
例如(假设所有日期字段包含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点,则调整为在特定时间使用BETWEEN。
对于非常大的表,将WHERE语句移到每个表UNION中。
发布于 2017-05-14 12:55:24
如果您只想要表名称,并且您知道有一个:
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;这将返回满足条件的第一个表。
https://stackoverflow.com/questions/43959555
复制相似问题