簡體   English   中英

來自多個表的SQL,無需連接

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM