2017-06-20 118 views
0
UPDATE campaigns.list_name_counter SET counter = CASE WHEN name = 'occupant' THEN '2' WHEN name = 'occupant' THEN '3' WHEN name = 'Resident' THEN '3' WHEN name = 'Resident' THEN '4' WHEN name = 'Resident' THEN '5' END WHERE name IN ('occupant', 'occupant', 'Resident', 'Resident', 'Resident'); 

此表只有3列。 ID,名稱和計數器。當完成上述聲明更新後,它只完成第一個居住者和第一個居民。它跳過了其餘的部分。如果有的話,如果它只能爲每個唯一的名稱做一次,我寧願它做每個的最後一個,而不是每個的第一個,但無論如何,它應該更新每一個,即使名稱重複,或不是允許?我怎樣才能讓它更新最大的櫃檯數量,而不是最小的?我的語法是在哪裏搞亂的?爲什麼這個bulk mysql case語句不起作用?

+0

如果您希望它在上一次真正的WHEN THEN上更新,爲什麼甚至有更早的?什麼時候'name ='Resident''使用3而不是5? _另外,術語「散裝箱」並沒有太多意義。_ – Uueerdo

+0

重複WHEN條件的想法是什麼? – axiac

+0

好吧,這很難解釋,但它只是我的循環如何工作並收集csv文件的所有行。當所有的名字都是獨一無二的時候,我可以做這件事實際上,即使有重複我可以使它的工作,如果名稱還沒有保存在表中,但一旦名稱被保存,這是當重複它搞砸了,並沒有採取行動。我需要提取當前計數器,然後在完成所有循環後使用正確的編號保存計數器編號。所以如果佔有者存在,它的1和2更多在下一個csv然後它應該是3,如果居民存在計數器是2和3更多在下一個列表中,那麼它應該以5結束。 – leoarce

回答

0

CASE語句不像C語言那樣「經歷」;只有第一場比賽將被使用;它們相當於「if ... else if .... else if ... else if ....」

相關問題