2015-11-24 5 views
-1

У меня есть поле group_id в таблице, которая содержит идентификатор для группы и ассоциируется с основным членом этой группы. Таким образом, любая из записей, которая имеет значение group_id 1, например, принадлежит группе 1, а запись с идентификатором 1 является основным пользователем). Я пытаюсь обновить все записи в таблице, изменив значение group_id с идентификатора основного пользователя на имя пользователя основного пользователя. Я не часто использую строгий SQL, но мне нужно знать, как это сделать. Любая помощь приветствуется. т.е .:Как изменить group_id таблицы из идентификатора основного пользователя в качестве имени пользователя основного пользователя SQL?

ID username  group_id 
1  bobdabuilder 1 
2  cb49210   1 
3  the_man   1 

мне нужно изменить его так, что-то вроде:

ID username  group_id 
1  bobdabuilder bobdabuilder 
2  cb49210   bobdabuilder 
3  the_man   bobdabuilder 
+2

Пожалуйста, пост выборочные данные и ожидаемые результаты. – Harsh

+0

Включил пример того, что мне нужно сделать – Battousai

ответ

0
SELECT 
    u.id, 
    u.username, 
    s.username AS group 
FROM sometable u 
INNER JOIN sometable s 
    ON s.id = u.group_id 
ORDER BY u.id ASC 

выше присоединиться положение должно работать, как и ожидалось/необходимости.


UPDATE запрос будет написана по той же схеме:

UPDATE sometable a 
INNER JOIN sometable b 
    ON a.group_id = b.id 
SET a.group_id = b.username 
+0

Я пытаюсь изменить данные в одной таблице, поэтому я могу использовать этот код, когда он является одной и той же таблицей, или мне нужно сделать временную копию таблицы, чтобы изменить данные? – Battousai

+0

@Battousai Это очень плохая идея дизайна БД. Держите group_id как целое/указатель на идентификаторе фактического пользователя. Это занимает меньше места на жестком диске, и поиск с использованием соединения происходит быстро (поскольку MySQL уже имеет копию таблицы в памяти) – hjpotter92

+0

Проблема в том, что я создал новый сайт. На старом сайте дополнительные участники группы добавляются после основного пользователя, поэтому легко получить идентификатор и добавить его как group_id для других членов группы, но с новым сайтом, основные пользователи могут добавить себя, а также дополнительные пользователей одновременно, и поскольку для основного пользователя еще нет записи, трудно добавить идентификатор пользователя в качестве group_id для дополнительных членов этой группы. Насколько я понимаю, я не могу захватить идентификатор основного пользователя и добавить его как group_id. – Battousai

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