簡體   English   中英

如何從三個或更多表中獲取數據

[英]How to get data from three or more tables

我需要在三個表之間顯示不同的數據。 如何做到這一點。

FirstTable:

9999999999                     
8888888888           
7777777777
6666666666
5555555555

SecondTable:

7777777777
9999999999

ThirdTable:

8888888888

我想以這種格式輸出。

6666666666
5555555555

使用LEFT JOIN

   SELECT T1."Col"
     FROM Table1 T1
LEFT JOIN Table2 T2 
       ON T1."Col" = T2."Col"
LEFT JOIN Table3 T3 
       ON T1."Col" = T3."Col"
    WHERE T2."Col" IS NULL 
      AND T3."Col" IS NULL 

輸出:

|        COL |
--------------
| 6666666666 |
| 5555555555 |

看到這個SQLFiddle

對於您提供給我們的數據,您可以嘗試以下操作:

    select YourColumn from Table1
minus
    select Yourcolumn from Table2
minus
    select YourColumn from Table3

但是,這不會給您提供表3中存在的條目,但不會給您提供表1 ND 2中的條目。我建議您改進問題。

嘗試這個...

Select yourColumn 
from Table1 
where yourColumn  not in
   ( select yourColumn  from Table2) 
and yourColumn  not in 
  (select yourColumn  from table3)

嘗試:

SELECT Column FROM FirstTable
WHERE Column NOT IN
    (SELECT Column from SecondTable UNION 
    SELECT Column from ThirdTable)

您的結果沒有顯示不同的數據。 它顯示不在任何其他表上的數據

所以你可以這樣寫

    CREATE TABLE FirstTable (VALUE VARCHAR(10))

    CREATE TABLE SecondTable (VALUE VARCHAR(10))

    CREATE TABLE ThirdTable (VALUE VARCHAR(10))

    INSERT INTO FirstTable VALUES(9999999999)                     
    INSERT INTO FirstTable VALUES(8888888888)
    INSERT INTO FirstTable VALUES(7777777777)
    INSERT INTO FirstTable VALUES(6666666666)
    INSERT INTO FirstTable VALUES(5555555555)


    INSERT INTO SecondTable VALUES(9999999999)                     
    INSERT INTO SecondTable VALUES(7777777777)

    INSERT INTO ThirdTable VALUES(8888888888)

    SELECT a1.vALUE FROM (SELECT a.vALUE FROM FirstTable a 
        LEFT OUTER JOIN SecondTable b ON A.VALUE=B.VALUE
            WHERE   b.VALUE IS NULL) a1
        LEFT OUTER JOIN ThirdTable c ON  A1.VALUE=C.VALUE
        WHERE c.VALUE IS NULL

與流行的傾向相反,我認為這是一個好問題!

以下解決方案在三個表中找到all unique values

with middle_tab as(
select t1.id t1_id,t2.id t2_id,t3.id t3_id from tab1 t1
full outer join tab2 t2 on t1.id=t2.id
full outer join tab3 t3 on t1.id=t3.id
 )

  select coalesce(t1_id,t2_id,t3_id) unique_ids from (
select t1_id,t2_id,t3_id,NVL2(t1_id,0,1)+NVL2(t2_id,0,1)+NVL2(t3_id,0,1) b
 from middle_tab)
where b>1

這是SQL Fiddle演示!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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