2013-09-29 31 views
1

我有一个包含名,中间名,姓氏,出生年份,市政和收入详细信息的表格。数据集包含数年。问题是数据不包括每个人的唯一身份证。MySQL - 查找同一列中的字段之间的差异

因此,我必须根据上述数据来比较同一个人,以便每年找到相同的人。不完全确切,但没有其他方式。

我试图写一个查询,比较一年中的收入与另一个收入发展(下降,上升)。

我尝试至今:

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联接。任何想法如何解决这个问题?

回答

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条件在一起的,而不是在您的文章喜欢用逗号分隔。

+0

现货!非常感谢。一直在苦苦挣扎... – DataEditor

相关问题