2012-04-22 55 views
0

我在SQL表,我用這個說法來做出選擇:與id參數選擇在SQL

SELECT id, name, genre FROM table 

現在genre是ID(int)和我有表名爲流派,有我有:

id (int) 
name (string) 

什麼選擇會給我流派的名稱,而不是id。

+2

你到底想幹什麼?你到目前爲止擁有什麼樣的SQL,以及給你帶來了什麼結果? – 2012-04-22 10:03:57

+0

我很猶豫是否應該將我想象的內容作爲答案輸入。目前還不清楚你想問什麼。 – Lion 2012-04-22 10:08:20

+0

噢,還有一些問題:你在查詢什麼數據庫?你用什麼代碼來執行查詢?你可以在數據庫控制檯上寫一個查詢,給你想要的結果嗎? – 2012-04-22 10:09:33

回答

2
SELECT t.id, t.name, g.name 
FROM table t 
    JOIN genres g ON t.genre = g.id 
1
SELECT t.id, t.name, g.name 
FROM table t, genres g 
WHERE t.genre = g.id 
+0

這與[接受的答案](http://stackoverflow.com/a/10267007/578288)相同,但速度要慢得多。一般來說,'JOIN'比笛卡爾乘積和'WHERE'要快。至少,我在[數據庫系統類](https://www.cs.drexel.edu/~jsalvage/Winter2012/CS461/index.html)中瞭解到,但我不記得它背後的解釋。 – 2012-04-22 23:38:58

+2

@ RoryO'Kane不,它沒有任何區別。請參閱:http://stackoverflow.com/questions/121631/inner-join-vs-where – user1135357 2012-04-23 13:31:22

+1

你是對的。我問了我的教授這件事,他說他不是說那裏的「哪裏」比較慢。這只是爲了教學的目的,他希望我們避免使用'WHERE'語法,因爲它只能用於* inner *連接。他希望我們學習'INNER JOIN'的語法,以便稍後教會我們'OUTER JOIN','LEFT JOIN'等,它們的語法相同。 – 2012-05-11 01:01:09

0

您需要使用Join

select G.name 
    from table table1 T,Genres G 
    where T.genre = G.id;