我有一张包含名字,中间名,姓氏,出生年份,市政府和收入详情的表格。数据集包含几年。问题是数据不包括每个人的唯一id。
因此,我必须根据上述数据对同一个人进行比较,找出每年相同的人。不完全准确,但没有其他办法。
我试图写一个查询,比较一年和另一年的收入,看看收入如何发展(下降,上升)。
我目前的尝试:

SELECT e.firstname, e.lastname, e.birth, e.middlename,
    e.income-n.income as incomediff
    from incomedata e
LEFT JOIN
    (select n.firstname, n.lastname, n.birth, n.middlename) as
    ON e.firstname = n.firstname, e.lastname = n.lastname, e.birth = n.birth, e.middlename = n.middlename
    where e.municip=1234 and e.year IN (2011,2010);

这不起作用(很明显),我想如果没有唯一的id,我就不能运行JOIN。你知道怎么解决这个问题吗?

最佳答案

也许你在找这个:

SELECT e.firstname, e.lastname, e.birth, e.middlename,
    e.income - n.income as incomediff
FROM incomedata e
LEFT JOIN incomedata n
    ON e.firstname = n.firstname
    AND e.lastname = n.lastname
    AND e.middlename = n.middlename
    AND e.birth = n.birth
WHERE e.municip = 1234
    AND e.year = 2011
    AND n.year = 2010

在多个字段上进行连接没有错,您只需将条件AND放在一起,而不是像在文章中那样用逗号分隔。

08-28 09:00