2016-06-08 27 views
2

使用兩個SQLite表,如下所示。我想要返回此人的姓名,以及他們的年齡段,而不是rangeId。返回數據作爲其他表的列

SELECT t1.ageRange, t2.name 
FROM Table1 t1 
INNER JOIN Table2 t2 
WHERE t1.rangeId = t2.ageRangeId 
 
. 
. //This code does what I want, but is really inefficient and isn't scalable 
. 

Table1 _____________//table name 
rangeId : ageRange__ //column names 
1 : 0 - 16 ___________//sample data 
2 : 17 - 28 
3 : 29 - 50 
4 : 50+ 
. 
Table2 
name : ageRangeId 
John : 2 
David : 3 
Karl : 2 
Ben : 1 
+1

我不認爲有一個更好的辦法。 – Strawberry

+2

使用ON insted的地方 – JYoThI

+0

......哦,明顯的例外 - $ – Strawberry

回答

2

的INNER JOIN syntaxe是

FROM Table1 INNER JOIN Table2 ON Table1.key=Table2.key 

我做了一個小提琴。這裏是你想要的東西:

SELECT t1.ageRange, t2.name 
FROM Table1 t1 
INNER JOIN Table2 t2 
ON t1.rangeId = t2.ageRangeId 

http://sqlfiddle.com/#!9/10c60f/2

的問題是,你的例子很簡單,你做的方式,它不能被改善。你只需加入2張小桌子。還有就是不同的方式來做到這一點,但他們都相當於

0

試試這個

SELECT t2.name, t1.ageRange 
FROM Table1 t1 INNER JOIN Table2 t2 ON (t1.rangeId = t2.ageRangeId) 
0

的爲連接替代將是一個correlated subquery

SELECT name, 
     (SELECT ageRange 
     FROM Table1 
     WHERE rangeId = Table2.ageRangeId 
     ) AS ageRange 
FROM Table2; 
相關問題