Слияние объектных отношений пользователя с другим пользователем, с условием, в MySQL

Это мой первый ТАК вопрос:)

Я пытаюсь "объединить" временного пользователя с существующим пользователем и всеми связанными с ним объектными отношениями - одно из них "post_relationships"

Проблема в том, что.. если оба пользователя имеют отношение к одному и тому же сообщению, простая инструкция INSERT INTO ... SELECT приводит к ошибке DUPLICATE KEY..

ТАКЖЕ, если один из пользователей имеет более высокий уровень access_level, я бы хотел сохранить HIGHEST license_level двух пользователей.

Я создал запрос, который работает, но мне интересно, есть ли лучший способ сделать это. Я боюсь, что по мере роста таблицы этот запрос будет не столь эффективным.

INSERT INTO post_relationships
            (id_user, id_post, access, label, time_created)
        SELECT 
            old.id_user,
            new.id_post, 
            new.access, 
            new.label, 
            new.time_created 
        FROM 
            post_relationships AS old,
            post_relationships AS new
        WHERE 
            old.id_user = '$id_old' AND 
            new.id_user = '$id_new' AND
            new.id_post = old.id_post AND 
            new.access > old.access
        ON DUPLICATE KEY UPDATE
            access= new.access,
            label = new.label

Это всегда вызывает ОБНОВЛЕНИЕ, когда условие

new.access > old.access

И это беспокоит меня из-за того, что здесь есть некоторый избыточный код. Какие-либо предложения?

Спасибо!

0 ответов

Другие вопросы по тегам