Присоединение значений столбцов? - PullRequest
2 голосов
/ 05 декабря 2011

У меня есть запрос, который выбирает список идентификаторов пользователей и их соответствующие имена пользователей на доске, но из другой таблицы также получает столбец, который имеет значение (имя) в строке, соответствующей идентификатору пользователя, если указанный пользователь имеетизменил свое имя.Используя внешнее объединение, я получил три хорошо отображенных, как в следующем примере нескольких результатов:

member_id    name             dname_current
1            Blablabla1       blablabla2
2            Bla4444          
3            RevZ             
5            Herpaderp42      
6            Lalalala         
7            Kaboom           
14           testtesttest21   Formula21
15           Alex             Ethan
16           Bob              Radio3

SQL-запрос для получения трех столбцов выглядит следующим образом:

SELECT
  data_members.member_id, 
  data_members.name,
  data_dnames_change.dname_current
FROM data_members LEFT OUTER JOIN data_dnames_change
    ON data_members.member_id = data_dnames_change.dname_member_id
GROUP BY data_members.member_id

Есть ли способ отобразить это так, чтобы он объединял значения, которые существуют в столбце 'dname_current' этой другой таблицы, в столбец 'name', заменяя любое значение, которое уже находится в соответствующей строке этого столбца?

1 Ответ

3 голосов
/ 05 декабря 2011

COALESCE() возвращает первое ненулевое значение, поэтому вы можете сделать следующее, чтобы отдать предпочтение dbname_current над data_members.name, если оно не равно NULL:

SELECT
  data_members.member_id, 
  COALESCE(data_dnames_change.dname_current, data_members.name) AS name
FROM data_members LEFT OUTER JOIN data_dnames_change
    ON data_members.member_id = data_dnames_change.dname_member_id
GROUP BY data_members.member_id

Должен вернуться:

member_id    name
1            blablabla2
2            Bla4444
3            RevZ
5            Herpaderp42
6            Lalalala
7            Kaboom
14           Formula21
15           Ethan
16           Radio3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...