[英]SQL from multiple tables without join
我在oracle中有三個表,它們包含今天,昨天和前天的數據,並且有一個列名'date'。 我需要找到表的表名,該表名包含基於“日期”列的昨天的數據。 如何查詢沒有加入的人,因為我不需要加入
您可以將表合並在一起。
例如(假設所有日期字段都包含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中。
如果您只想要表名,並且知道其中一個:
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;
這將返回滿足您條件的第一個表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.