MySQL - 找到同一列中字段之间的差异

时间:2013-09-29 12:51:53

标签: mysql

我有一张包含名字,中间名,姓氏,出生年份,市政府和收入详情的表格。该数据集包含数年。问题是数据不包含每个人的唯一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。如何解决这个问题?

1 个答案:

答案 0 :(得分:5)

也许你正在寻找这个:

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

在多个字段上执行JOIN没有任何问题,您只需将AND条件放在一起,而不是像在帖子中那样用逗号分隔。