2013-09-29 48 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

相關問題