2017-03-15 55 views
0

我有兩張桌子。兩者都有稱爲「ID」的字段。SQL查詢 - 我可以查詢兩個都有ID字段並檢索這兩個字段的表嗎?

Table 1 has "ID", "Title", "Shift" 
Table 2 has "ID", "Table1ID", "Details" 

我想查詢表2和檢索基於「ID」值,它的所有細節,但也得從表1中,涉及到了「Table1ID」值的值。

我已經試過這... SELECT * FROM Table2 a, Table1 b WHERE a.TableID = b.ID

這工作,但只檢索一個表的 「ID」 字段。

我一直在玩聯盟所有,但不能得到它的工作。

任何想法?

感謝

+0

顯示你樣本數據和預期產出。 \t請閱讀[**如何提問**](http://stackoverflow.com/help/how-to-ask) \t \t這裏是一個偉大的地方[** START **] (http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/)來了解如何提高您的問題質量並獲得更好的答案。 –

回答

1

是的,你可以添加一個別名:

SELECT a.ID AID, a.Title, a.Shift, b.ID BID, b.TableID, b.Details 
FROM Table2 a, Table1 b 
WHERE a.TableID = b.ID 

以上從表A和B返回ID在結果AIDBID

+2

推廣使用'JOIN' sintaxis,Aaron Bertrand寫了一篇不錯的文章[踢壞壞習慣:使用舊式JOIN](http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/關於它的壞習慣 - 踢 - 使用 - 舊式 - 連接.aspx)。 –

+0

@Cyclonecode感謝您的出色答案。有沒有辦法讓SELECT獲得所有的字段(沒有明確寫入)並且仍然是別名特定的字段?我的實際Table2有很多字段(爲了清晰起見,我省略了它們)?再次感謝:-) –

+1

@JohnT - 是的,這應該工作'SELECT A. *,B. *,A.ID AID,B.ID BID FROM Table1 A,Table2 B' – Cyclonecode

1

有沒有辦法讓SELECT得到所有的字段(沒有 明確寫他們),並仍然別名特定的領域?

是其可能的,但被認爲是有害的

這是你會怎麼做ID

SELECT Table1.*,Table2.* from table1 inner join Table2 on Table1.ID = Table2.Table1ID; 

爲什麼我說的有害請看這裏:Why is SELECT * considered harmful?

正確的選擇應該是:

SELECT Table1.ID,Table1.Title,Table1.Shift,Table2.ID.Table2.Table1ID,Table2.Details.* from table1 inner join Table2 on Table1.ID = Table2.Table1ID;