INSERT SELECT запрос, когда один столбец уникален

Мне нужно вызвать INSERT + SELECT, чтобы импортировать пользовательские данные в другую таблицу, и мне нужно отфильтровать дублирование имени пользователя, поэтому мне нужно что-то вроде этого:

INSERT INTO new_table SELECT email, distinct user_name, password from old_table

но отдельные работают только при использовании distinct email, user_name, password, и все эти столбцы должны быть уникальными.

Есть ли другой способ вставить select с уникальными именами пользователей (мне нужна только первая строка - с более низким идентификатором)?

EDIT Я забыл упомянуть, что использую mysql


person jcubic    schedule 25.07.2012    source источник


Ответы (1)


Без тестирования я бы ожидал, что что-то вроде этого поможет (при условии, что столбец id называется id)

INSERT INTO new_table 
    SELECT email, user_name, password 
    FROM old_table 
    INNER JOIN 
        ( SELECT MIN(id) FROM old_table GROUP by user_name ) minids
    ON minids.id = old_table.id
person Eddy    schedule 25.07.2012
comment
Это работает, но нужно добавить MIN(userid) as userid (мой идентификатор - идентификатор пользователя) - person jcubic; 26.07.2012