Задача заведомо нерешаема, но мало ли, может я не знаю чего...
Вот такой дамп
Цитата |
CREATE TABLE IF NOT EXISTS `test` ( `date` date NOT NULL, `text` varchar(250) NOT NULL, UNIQUE KEY `key` (`date`,`text`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -- Дамп данных таблицы `test` -- INSERT INTO `test` (`date`, `text`) VALUES ('2014-03-01', 'a'), ('2014-03-01', 'b'), ('2014-03-02', 'c'), ('2014-03-03', 'd'), ('2014-03-04', 'e'); |
UPDATE test SET `text` = '' WHERE `date` < '2014-03-03'
Цитата |
Этого сделать нельзя, так как там уникльный индекс. Но очень надо |
Цитата |
Вся беда в том, что нет там id, так уж устроена таблица. И индекс нужен именно таким. Архивация да, один из варинтов, но мне не нужны эти данные, а их там гигабайты. Нафиг тратить место... Даты там повторяются, так что обрезть не выйдет. С хэшем - хорошя идея 32 символа тоже многовато, но на безрыбье, как говорится. Мне идея нравится за то, что можно одним запросом. Спасибо, попробую))) |
UPDATE test SET `text` = NULL WHERE `date` < '2014-03-03'
Цитата (Invis1ble @ 14.03.2014 - 07:42) |
Разве прокатит такой финт? По идее, alter table выдаст ошибку, что дубликаты есть. Могу ошибаться, конечно |
Цитата (ABC @ 14.03.2014 - 08:03) |
Может я ошибаюсь, но из за NULL поиск по такой таблице с уникальным полем будет медленнее. |
Цитата (glock18 @ 14.03.2014 - 09:51) | ||
Все прокатит ) |