Скажем, у меня есть эта таблица
id a b
1 data 1234
2 data
Я хочу объединить с разделителем (но), если нет данных, не добавляйте разделитель.
Если я сделаю
UPDATE `table` SET `b` = CONCAT_WS(',',`b`,'newData') WHERE `id` = '1'
Я получаю ожидаемый 1234, новые данные в b
но я делаю
UPDATE `table` SET `b` = CONCAT_WS(',',`b`,'newData') WHERE `id` = '2'
Я получаю, новые данные в b
((но я хочу только новые данные без разделителя)).
Есть ли способ сделать это ?
Вы можете попробовать это Mate:
# [A] sample result set for checking
SELECT
`a`, `b`,
IF(
(`a` IS NOT NULL AND `a` != '')
AND (`b` IS NOT NULL AND `b` != ''),
CONCAT_WS(',', `a`, `b`),
REPLACE(CONCAT_WS(',', `a`, `b`), ',', '')
) `result`
FROM `table`
WHERE `id` IN (1, 2);
Если результат установлен в [A]
удовлетворившись тем, что вам нужно, вы можете продолжить работу со скриптом, используя [B]
Запрос на обновление:
# [B] process query for the new values
UPDATE `table`
SET `b` = IF(
(`a` IS NOT NULL AND `a` != '')
AND (`b` IS NOT NULL AND `b` != ''),
CONCAT_WS(',', `a`, `b`),
REPLACE(CONCAT_WS(',', `a`, `b`), ',', '')
)
WHERE `id` IN (1, 2);
Надеюсь, я могу помочь, ура!
Других решений пока нет …