sqlite self join with where子句

sqlite self join with where clause

我有一个 table,其中包含姓名、分数和年份。我需要一个命令 return 特定年份的所有名称,即使该名称未包含在该年份中也是如此。示例

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

我认为这很容易,但我正在努力让它发挥作用。

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

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`

虽然它不漂亮,但它确实可以按预期工作: