同じテーブルの 3 つの電子メール列を 1 つの大きな電子メール列に結合しようとしていますが、これは次の SQL で実行できます。
SELECT email
FROM (
SELECT email
FROM accounts
UNION
SELECT email2
FROM accounts
UNION
SELECT email3
FROM accounts
)accounts WHERE email LIKE '%@%'
しかし、同じテーブル (アカウント グループ) の別の列が = である行のみを特定の値に返すこともできるようにしたいと考えています。たとえば、私がうまくいくと思ったこと:
SELECT email, accountgroup
FROM (
SELECT email, accountgroup
FROM accounts
UNION
SELECT email2, accountgroup
FROM accounts
UNION
SELECT email3, accountgroup
FROM accounts
)accounts
WHERE email LIKE '%@%'
AND accountgroup = 'Vyrav'
ただし、この 2 番目のステートメントは意図したとおりに機能せず、1 行しか返されません。UNION は、accountgroup 列の値が同じ行 (すべての行) をマージしていると思います。
最初のステートメントを変更して、最後の行を次のようにするとします。
)accounts WHERE email LIKE '%@%' AND accountgroup='Vyrav'
「WHERE句」に「不明な列「アカウントグループ」があります」と表示されます
ここで私が間違っていること、または代わりに何をすべきかを誰かアドバイスできますか?
事前に感謝します。どんな助けでも大歓迎です。