2017-11-07 4 views
1
select emailId 
from <table1> 
where <cloumn1> in (select <column1> 
        from <table2> 
        where <condition1> and <condition2> and <condition3> is null 
        ) 
       ) as <alias Name> 

SQLデータベースでは、2つのemailIDがtable2のロールに関連付けられています。さて、フェッチしている間、私は両方のemailIDと他のフィールドが必要です。 上記のクエリを変更して、「サブクエリが複数の値を返しました」というエラーを表示しないようにする方法。 PS:このクエリはサブクエリになります。SQL:サブクエリが1つ以上の値を返しました

+0

明らかに、これはクエリ全体の一部であり、エラーメッセージを返すものではありません – Lamak

+0

あなたが指定したクエリは2番目の ')'でエラーを返すべきです。サブクエリは 'in'クエリであるため、問題ありません。 –

+0

@ GordonLinoff私はopが別の 'SELECT'の列としてこの全体のクエリを使用していると思います – Lamak

答えて

0

短答:キーワードと最初の列の間にTOP 1を追加してください。

サブクエリが非常に非効率であるため、長い答えは、代わりにJOINを使用します。

更新日: TOP 1はMS-SQLにのみ適しており、他のバージョンでは結果セットがLIMITと異なる場合がありますが、解決方法は同じです。

1
SELECT t1.emailId, * 
FROM table1 t1 
INNER JOIN table2 t2 ON t2.column1 = t1.column1 
WHERE t2.condition = something 

内部結合を使用できます。

関連する問題