Mysql захватить строку, если условие выполнено, захватить другую, если нет - PullRequest
0 голосов
/ 04 апреля 2020

Я пытаюсь присоединить адрес пользователя к имени пользователя. Сначала я хочу присоединиться к их почтовому адресу, но если у них нет почтового адреса, я хочу присоединиться к их домашнему адресу, который у них будет. Я изо всех сил пытаюсь найти правильный путь к go по этому поводу. Это легко, если / еще .. Если у них есть address_type = 'Mailing', выберите эту строку, если нет, выберите строку, где address_type = 'Home'. Любая помощь будет отличной.

1 Ответ

2 голосов
/ 04 апреля 2020

Это похоже на выполнение двух левых соединений вместе с COALESCE для выбора нужного адреса:

SELECT
    u.name,
    COALESCE(a1.address, a2.address) AS address
FROM user u
LEFT JOIN address a1
    ON u.id = a1.user_id AND
       a1.address_type = 'Mailing'
LEFT JOIN address a2
    ON u.id = a2.user_id AND
       a2.address_type = 'Home';

Приведенные выше логики c сначала выберут почтовый адрес для каждого пользователь, если он будет доступен. В противном случае по умолчанию будет использоваться домашний адрес.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...