SQL Предпочитаемый столбец - PullRequest
1 голос
/ 30 декабря 2011

У меня есть таблица MySQL, в которой хранятся сведения о людях, например:

  • Имя
  • Адрес
  • WorkEmail
  • HomeEmail
  • Предпочитаемый адрес электронной почты («WorkEmail» или «HomeEmail»)

Я хочу выбрать только предпочитаемый им адрес электронной почты.Есть ли аккуратный способ сделать это с помощью SQL?или мне просто нужно будет сделать это после того, как я вытащу данные?

Ответы [ 5 ]

5 голосов
/ 30 декабря 2011

Простая инструкция case должна помочь:

SELECT 
    Name,
    CASE WHEN PreferredEmail = 'WorkEmail' THEN WorkEmail ELSE HomeEmail END AS Email
FROM
    MyTable
2 голосов
/ 30 декабря 2011

выберите IF (PreferredEmail = 'WorkEmail', WorkEmail, HomeEmail) AS Email

2 голосов
/ 30 декабря 2011
(Select WorkEmail from MyTable where preferredEmail = 'WorkEmail') 
 Union
(Select HomeEmail from MyTable where preferredEmail = 'HomeEmail') 
0 голосов
/ 30 декабря 2011

Зачем вам нужен список из нескольких писем? Если вы собираете несколько адресов электронной почты и когда-нибудь захотите собрать более одного адреса, вы всегда можете создать дополнительную таблицу, которая связывает пользователя со всеми его возможными адресами электронной почты и имеет второй третий столбец, который может быть флагом для обозначения. Основной адрес электронной почты.

Основной стол

- UID
- Name
- Address

Таблица электронной почты

- UID
- Email address
- Primary

Тогда вы могли бы просто сделать запрос, где указано Первичное, и присоединиться к другому по уникальному идентификатору.

0 голосов
/ 30 декабря 2011

Это простой запрос:

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