2012-01-17 74 views
0

我有選擇:選擇左連接,除了一列

SELECT t1.*, t2.* from t1 left join t2 on t2.id = t1.id 

時存在或不存在T2的id我想從T2除了t2.id所有列(可以是NULL)。

有沒有辦法做到這一點,而不打印出查詢中的所有列名稱?

THX

+0

由於@Sergio表示 – Quassnoi 2012-01-17 11:13:31

+0

@Quassnoi thx多一次 – mort 2012-01-17 11:26:33

+0

嗯,要麼我不明白你在問什麼,或者你沒有檢查你自己的其他答案。 – newtover 2012-01-17 11:34:00

回答

3

不,你必須要麼指定感興趣的所有列,或者使用通配符。

0

如果兩個表只有id作爲公共列,您也可以使用這個:

SELECT * 
FROM t1 
    NATURAL LEFT JOIN 
     t2 
+0

如果有他不想加入的同名列,可能會很危險 – newtover 2012-01-17 10:06:55

+0

此外,它會返回't1'的'id'。 – Quassnoi 2012-01-17 11:14:56

+0

@Quassnoi,它似乎從OP的問題是不希望't2.id'在輸出中,但確實需要't1.id' – newtover 2012-01-17 11:47:19

1
SELECT * 
FROM t1 
LEFT JOIN t2 
    USING (id); 

也就是說,順便說一下,原因,爲什麼它是一個好主意,名字您要使用的列在數據庫中以相同的方式加入。

+0

是的..你是對的..用USING刪除重複的列ID ..但是當你使用t1.id,t1.name,t2。*,t3。*不再工作,並且重複的列ID回來了:( – mort 2012-01-17 11:57:29

+1

@mort,好吧,那是另一種情況:現在你明確地說你想要所有的不管怎樣,最好是明確指定所有列。 – newtover 2012-01-17 12:07:10