1
我有一個表,因爲這樣的:Mysql的加入對上一行匹配的外鍵
|id|jobid|statusid| ... other irrelevant rows...
|1 |123 | 1 |
|2 |321 | 2 |
|3 |123 | 2 |
|4 |321 | 3 |
|5 |123 | 3 |
由於一些不幸的用戶錯誤,他們結束了使用(例如)狀態3的一些500個職位當政策是在狀態2後使用狀態4.
當前行與行之間存在不確定的距離時,如何將行連接到與列「jobid」中的值匹配的上一行它,鑑於「statusid」中的值是3?目標是更新表格,以便任何3跟在同一個jobid後面的2(不管ID之間的距離)將變爲4.
我的期望輸出將連接第4行和第2行以及5和3 (我知道的例子是一致的ID-2,是不是在我的數據庫的情況下)。
到目前爲止的關係將是
SELECT mt.id, mt3.id
FROM mytable mt
INNER JOIN (SELECT MAX(mt1.id) AS mid, mt1.jobid
FROM mytable mt1
WHERE mt1.id < mt.id
GROUP BY mt1.jobid) mt2
ON mt2.jobid = mt.jobid
INNER JOIN mytable tm3
ON mt3.id=mt2.mid
AND mt3.statusid = 2
WHERE mt.statusid=3
但在該線子查詢閱讀 「哪裏sh1.id < mt.id」 是一種關係,不能exis t起源於子查詢之外的mt.id。
我怎樣才能使這個查詢工作?
謝謝!
不得不在左連接前添加一個t來讓mysql運行代碼。最後總是讓它加入同一行(1將加入1,2加入2等)。嘗試切換到tprev,從幾千行的表中獲得了幾億的結果,所以可能也不對。也許這只是晚了,我很疲憊,失去了一些明顯的東西? 謝謝! –