sqlite自我加入where子句

时间:2015-06-12 19:04:02

标签: sqlite join self-join

我有一张由姓名,积分和年份组成的表格。我需要一个命令来返回特定年份的所有名称,即使该名称未包含在该年份中。实施例

Name        Points    Year
-------    ------- 
tom           8       2011
jim           45      2011
jerry         25      2011
zack         124      2011
jeff          45      2011
tom           62      2012
jim          214      2012
jerry         13      2012
zack          32      2012
arnold         4      2012




Name        Points    Year
-------    ------- 
tom           8       2011
jim           45      2011
jerry         25      2011
zack         124      2011
jeff          45      2011
arnold       NULL     NULL

我认为这很容易,但我很难让它发挥作用。

1 个答案:

答案 0 :(得分:2)

根据你的解释,我认为你需要可以使用这样的东西:

SELECT DISTINCT
    N.`Name`,
    D.`Points`,
    Y.`Year`
FROM
    `MyData` Y
LEFT JOIN (SELECT DISTINCT `Name` FROM `MyData`) N ON 1=1
LEFT JOIN `MyData` D 
    ON  D.`Year` = Y.`Year` 
    AND D.`Name` = N.`Name`
ORDER BY 
    Y.`Year`

虽然它并不漂亮,但似乎按预期工作:

enter image description here