将数据作为其他表中的列返回

时间:2016-06-08 10:19:39

标签: sqlite join

使用两个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

3 个答案:

答案 0 :(得分:2)

INNER JOIN语法是

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张小桌子。有不同的方法来做到这一点,但它们都是等价的

答案 1 :(得分:0)

试试这个

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

答案 2 :(得分:0)

联接的替代方法是correlated subquery

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