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