2011-12-30 5 views
1

私は例えば、人の詳細を保持しますMySQLのテーブルを持っている:SQL好適列

  • 名前
  • 住所
  • WorkEmail
  • HomeEmail
  • 優先メール( 'WorkEmail' または ' HomeEmail ')

希望のメールのみを選択します。 SQLを使用してこれを行うためのきちんとした方法はありますか?または私はデータを取り出した後にこれを行う必要がありますか?

SELECT PreferredEmail FROM people; 

答えて

5

シンプルcase文は、トリックを行う必要があります:

+0

驚くばかり!トリックをうまくやった。乾杯!私はまだそれはSQLになると少しのnoobのちょっとだよ –

+0

あなたは大歓迎です!あなたは正しい答えとしてマークすることもできます... ;-) – paulbailey

-2

これは単純なクエリである

SELECT 
    Name, 
    CASE WHEN PreferredEmail = 'WorkEmail' THEN WorkEmail ELSE HomeEmail END AS Email 
FROM 
    MyTable 
+0

質問を誤解しているようです。 – Karlson

2
(Select WorkEmail from MyTable where preferredEmail = 'WorkEmail') 
Union 
(Select HomeEmail from MyTable where preferredEmail = 'HomeEmail') 
2

はAS IF(PreferredEmail = 'WorkEmail'、WorkEmail、HomeEmail)を選択しますメール

0

なぜ複数のメールのリストが必要ですか?複数のメールアドレスを収集していて、いつでも複数のメールを収集したい場合は、可能なすべてのメールアドレスにユーザーを関連付けるセカンダリテーブルを作成し、2番目の第3列を指定することができますプライマリ電子メール。

メインテーブル

- UID 
- Name 
- Address 

メールテーブル

- UID 
- Email address 
- Primary 

次に、あなただけの一次のフラグが設定されている場所のためのクエリを実行し、一意のID上の他に参加することができます。