2017-05-03 71 views
2

我有兩個表。 表1從我從從一個表中進行選擇並查找另一個表並在輸出結果中獲得結果

Number  Code  Prefix  Area  Date 
987654321 333  691   SOF  20170503 
445  661   VAR  20170503 
765432110 678  611   BOR  20170503 
753357891 333  691   SHU  20170502 
667788223 445  661   ZOR  20170502 
812567111 678  611   NES  20170501 

和Table,我想用於查找

Code  Prefix  Type  Terminal 
333  691   F   NP 
445  661   M   P 
678  611   F   P 

在輸出選擇我想有

Table1.Number  Table1.Code  Table1.Prefix  Table2.Status 
987654321   333    691    F 
    445    661    M 
765432110   678    611    F 
753357891   333    691    F 
667788223   445    661    M 
812567111   678    611    F 

基本上,每個Table1中的行我想把Table2的狀態,其中

Table1.Code = Table2.Code and Table1.Prefix = Table2.Prefix 

我不想使用「加入」,那麼還有其他方法可以做到嗎?

謝謝!

+4

爲什麼你不想使用'join'?這是顯而易見的方法。 –

+0

正如Tab Alleman已經說過的,在這種特定情況下,您可以使用相關的子查詢。 – jarlh

回答

-1

我不想使用「加入」,那麼有沒有其他方法可以做到這一點?

是的,如果你不想使用JOIN,你可以使用子查詢。

0

顯而易見的解決方案是使用加入,但因爲你不希望使用加入

選項1

select 
    Table1.Number, 
    Table1.Code, 
    Table1.Prefix, 
    Table2.Status 
from Table1, Table2 
where Table1.Code = Table2.Code 
and Table1.Prefix = Table2.Prefix 

但這仍然是一個basicly加入,只有速記

選項2

select 
    Number, 
    Code, 
    Prefix, 
    (
     select Status 
     from Table2 
     where Code = Table1.Code 
     and Prefix = Table1.Prefix 
    ) as Status 
from Table1 

但是,這隻適用於如果子查詢返回1行,我想th是必須的方式較慢

+0

更慢或者不取決於所使用的dbms。不同的產品以不同的方式優化。 – jarlh

0

隨着子查詢:

SELECT 
Number, 
Code, 
Prefix, 
(SELECT Table2.Type 
FROM Table2 
WHERE Table1.Code = Table2.Code AND Table1.Prefix=Table2.Prefix 
) AS Status 
FROM Table1 
0
SELECT Table1.Number, Table1.Code, Table1.Prefix, Table2.Status 
FROM Table1 
LEFT JOIN Table2 ON Table2.Code = Table1.Code 

使用連接實際上是最好的解決辦法

你也可以做一個子查詢或使用WHERE語句,但它是一個非常糟糕的方式做

那麼你可以做

SELECT Table1.Number, Table1.Code, Table1.Prefix, Table2.Status 
FROM Table1, Table2 
WHERE Table1.Code = Table2.Code 
    AND Table1.Prefix = Table2.Prefix 

但是這是一個非常糟糕的方式......按照你想要的

+0

兩者都是加入... – jarlh

+0

@jarlh第二個是「假」加入不是一個真正的,但是是它的作品相同 使用子查詢是一個令人厭惡的方式來做這個請求。哪裏也聽到教好的做法 – RomMer

+1

這是一個加入,相信我。 (一個隱式的,而不是一個明確的連接。) – jarlh

相關問題