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`
虽然它不漂亮,但它确实可以按预期工作:
我有一个 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`
虽然它不漂亮,但它确实可以按预期工作: