2012-10-03 55 views
1

我有一個db,它有多列,跟着「name_ *」的語法。基本上我想在查詢中使用UPDATE,以便它更新第一列,其值等於''。Mysql UPDATE第一列不等於''

我發現這個至今:

UPDATE table SET 
`name_1` = CASE WHEN `name_1` = '' then 'something' else name_1 end, 
`name_2` = CASE WHEN `name_2` = '' then 'something' else name_2 end, 
`name_3` = CASE WHEN `name_3` = '' then 'something' else name_3 end 
WHERE ID = '$id_example' 

現在,這將是完美的,但它確實所有的人。我只想選擇第一個,在那裏它等於'',然後將剩下的設置爲之前的狀態。

回答

2

首先選擇你想要的列,那將是一個好習慣。

「SELECT * FROM表WHERE值=第一」

然後

您更新查詢

+0

這是我的第一個想法,但如果2個用戶同時登錄並且都有SELECT,則返回它爲空並執行UPDATES。一個用戶將覆蓋另一個用戶。 –

+0

我看到了,你是否想說如果2個用戶登錄每個更新應該像先到先得更新或類似user1更新第一個記錄然後user2會更新第二個記錄? –

+0

是的。然後,當整行被填滿時,它會插入一個新行,並讓所有其他列空白等待人填寫。 –

1
UPDATE table SET 
`name_1` = CASE WHEN `name_1` = '' then 'something' else name_1 end, 
`name_2` = CASE WHEN `name_1` != '' and `name_2` = '' then 'something' else name_2 end, 
`name_3` = CASE WHEN `name_1` != '' and `name_2` != '' and `name_3` = '' then 'something' else name_3 end 
WHERE ID = '$id_example' 
+0

,將工作完美,除了我得到18+列檢查,所以如果沒有什麼更好的這應該管用。 –