2016-11-01 1 views
1

У меня есть таблица, как этот

create table if not exists cms(
    id int(11) not null auto_increment primary key, 
    cms_id varchar(20), 
    published_datetime varchar(30), 
    last_modified_datetime varchar(30), 
    score float, 
    access_vector varchar(45), 
    access_complexity varchar(45), 
    authentication varchar(45), 
); 


INSERT INTO `cms` (`id`, `cms_id`, `published_datetime`, `last_modified_datetime`, `score`, `access_vector`, `access_complexity`, `authentication`) VALUES 
(1, 'CMS-2002-0493', '2002-08-12T00:00:00.000-04:00', '2016-10-24T11:23:01.940-04:00', 7.5, 'NETWORK', 'LOW', 'NONE') 

enter image description here

  • сейчас в этой таблице я не хочу, чтобы повторяющиеся значения для столбца под названием cms_id

  • Для этого я не хочу, чтобы установить уникальный ключ для столбца cms_id
    , потому что это значение столбца будет повторяться, то на основе этого значения столбца cms_id других значения столбцов могут быть изменены

  • это cms_id может быть таким же, где другие столбцы могут получить
    различных записей

  • каждый раз с тем же cms_id значения других столбцов в строке, возможно, различные записи

простыми словами, если же значение cms_id получает повторяется затем обновить всю строку (обновить все столбцы, основанные на cms_id)

теперь мне нужно вывод, как и только последнее вставленное значение cms_id, должно присутствовать в таблице. Все остальные cms_id должны быть удалены и обновлены с последней записью.

идентификатор coulmn с первичным ключом 1,613,1225 должен быть удален и должен присутствовать только 1837

мне нужно что-то вроде вывода изображения ниже

enter image description here

полностью он должен заменить неоднократные cms_id колонки в соответствии с последней записью.

соответственно, если cms_id значения повторов, то он должен удалить существующий cms_id значения, и он должен обновить все другие значения столбцов в соответствии с последней записью вставки, нужен запрос для этого

+0

Триггер, вероятно, будет работать, но я не знаком с ними. Использование языка сценариев для этого также может быть плохой идеей. – Isaiah

ответ

1

MySQL имеет специальную REPLACE команды который работает точно так же, как INSERT, за исключением того, что он заменяет строку, если первичный ключ или уникальный имеет то же значение.

REPLACE INTO cms ... 

Где ... представляет остальную часть запроса.

Отказ от ответственности: Этот оператор SQL является специальным расширением, созданным MySQL; он не является частью стандарта SQL и, вероятно, не будет работать с другими СУБД.

Смежные вопросы