我在oracle中有三个表包含今天,昨天和前天的数据,并且有一个列名称' date' 。我需要根据' date'找到包含昨天数据的表格的表格名称。柱。如何在没有加入的情况下进行查询,因为我不需要加入
答案 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;
这将返回符合您条件的第一个表。