2014-11-19 4 views
0

Я пытаюсь установить запрос для вставки данных на первой пустой колонке или, если значение ключа существует, обновление на первой пустой колонкеMysql вставки на первой пустой колонке на дубликат ключа обновления

"INSERT INTO table 
(myid,tr1) 
VALUES ('12345', '$data') 
ON DUPLICATE KEY UPDATE 
tr1 = CASE WHEN tr1 = '' ELSE tr1 END, 
tr2 = CASE WHEN tr2 = '' ELSE tr2 END, 
tr3 = CASE WHEN tr3 = '' ELSE tr3 END = $data" 

где MyID является уникальным ключом, другими словами:

-------------------------- 
| myid | tr1 | tr2 | tr3 | 
-------------------------- 
| 1233 | data|  |  | 
-------------------------- 
|  |  |  |  | 
-------------------------- 

Когда мой идентификатор вышлет, он обновляет данные в $ следующей пустой колонке, в данном случае для MyId = 1233 колонка будет TR2. Когда myid не существует, он вставляет myid и $ data в tr1. Запрос получает синтаксическую ошибку, будет признательна за любую помощь!

ответ

1

Возможно, проблема заключается в случае предложения. Попробуйте этот пример.

Я внес некоторые изменения в запрос, теперь он должен работать. EXAMPLE

INSERT INTO `table` (myid,tr1) 
VALUES ('12345', '111') 
ON DUPLICATE KEY UPDATE 
tr3 = CASE WHEN tr2 != '' AND tr3 = '' THEN '111' ELSE tr3 END, 
tr2 = CASE WHEN tr1 != '' AND tr2 = '' THEN '111' ELSE tr2 END, 
tr1 = CASE WHEN tr1 = '' THEN '111' ELSE tr1 END; 
+0

Это работает! Но теперь при обновлении он обновляет все пустые поля с помощью $ data, как обновляется только следующее пустое поле? – Adry

+0

Попробуйте сейчас, я обновил свой ответ. –

+0

Я бы никогда не пришла к нему в одиночку, спасибо большое! – Adry