我有一张由姓名,积分和年份组成的表格。我需要一个命令来返回特定年份的所有名称,即使该名称未包含在该年份中。实施例
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
我认为这很容易,但我很难让它发挥作用。
答案 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`
虽然它并不漂亮,但似乎按预期工作: