2012-04-22 40 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;