2011-06-18 7 views
-1

私は電子メールアドレスのデータベーステーブルを持っています。 文字列のセットに基づいてクエリを実行したいと思います。SQLクエリーアウト結合ソリューションのヘルプが必要ですか?

私は、クエリ結果に文字列のセットに含まれる電子メールアドレスを返すだけでなく、単純なものにします。

むしろ、クエリに使用されているすべての文字列と、テーブル内にあるかどうかを示すブール値フィールドを取得したいと考えています。例えば: [email protected] TRUE [email protected] TRUE [email protected] FALSE

私は(クエリ 'NOT IN' を使用してクエリ 'は' を結ぶ)ソリューションを持っている - しかし、私はでしたより良いものを望んでいる。

(はい、私は、クエリ文字列の集合から見つかった項目を削除する、単純なクエリを実行して、データベースなしでそれを把握することができます実現)

+1

次のようにUNIONを試してみます。それはあなたがやっていることに近いですが、私は構文についてはわかりませんが、あなたはおそらく考えを得るでしょう。 'SELECT email_address、" TRUE "テーブルからWHERE email_address IN( '[email protected]'、 '[email protected]') UNION SELECT email_address、" FALSE "FROMテーブルWHERE email_address not( 'a @ b。 com '、' [email protected] ') ' – Sai

+5

どのデータベースですか? SQLは "標準化されたクエリ言語"の略であり、標準化されていません... –

+0

どのデータベースサーバーですか?疑問はあいまいです。 –

答えて

1

あなたが(一時的)にするために照会されているアドレスを入れてくださいテーブルをクリックし、LEFT JOINをクリックして電子メールアドレステーブルを選択します。

SELECT 
    r.email_address, 
    CASE WHEN e.email_address IS NULL THEN 'FALSE' ELSE 'TRUE' END AS is_present 
FROM requested_emails r 
    LEFT JOIN email_addresses e ON r.email_address = e.email_address 
+0

ありがとう...はい、私はテンポラリテーブルがそれをすると信じています。 –

0
declare @CrappyStr varchar(10) 
set @CrappyStr = 'dummy' 

select @CrappyStr AS SearchString 
, email_address 
, CASE WHEN charindex(@CrappyStr, email_address) > 0 THEN 'True' 
ELSE 'False' END AS [BOO-lean] 
from SnarkyTable 
0

SQLはboolean型を持っていないことに注意してください。ここでは文字列を使用しています。

SELECT email_address, NVL(sq.present, 'FALSE') AS present 
    FROM mytable t 
    LEFT JOIN (SELECT email_address, 'TRUE' AS present 
       FROM mytable 
       WHERE email_address in (... your list here ...) 
      ) sq ON sq.email_address = t.email_address 
+0

これは私が取得しようとしていたことのようなものです...残念ながら、私はそれをmysql上で動作させることはできません。私はNVLのIFNULL関数を入れ替えましたが、何か悪いことはしないと思います。 email_addressがあいまいであると訴えたので、私は先に進み、t.emailとsq.emailの両方を尋ねました。それはまだ私にテーブルの電子メールレコードを与えただけです。 –

+0

あなたが試したことを正確に投稿できますか? – eaolson

関連する問題