2017-01-06 18 views
1

サブクエリが1つ以上の値エラーを返しました。これを解決するには?これは、エラーを修正する必要がありINサブクエリが2つ以上の値を返しました。サブクエリが=>またはサブクエリが式として使用されている場合は、これは許可されません。

select top 1 address from tblAdr A where A.pkey in (select b.pkey from tblMachine b where b.ADDRESS_PKEY is null) 

SELECT top 1 address 
FROM tblAdr A 
WHERE A.pkey= 
    (SELECT b.pkey FROM tblMachine b WHERE b.ADDRESS_PKEY IS NULL 
) 
+2

にしてみてくださいいずれかで、 '使いたいと比較することはできません複数の値を返します。 'またはそれより良い' JOIN' – GurV

答えて

1

変更=、しかし、あなたのクエリのロジックは、おそらく欠陥があります。 1行だけの後になっていますが(select top 1)、どの行を最初に選択するかは定義しません(order by節なし)。

2

サブクエリ(カッコ内の数量)は、pkey値を複数返します。これは、単一のスカラー値が必要なため許可されていません。あなたはpkeytblAdrで試合サブクエリの値のいずれかのかどうかをチェックして満足している場合は、次のようにあなたはWHERE A.pkey IN (...)を使用することができます。

SELECT TOP 1 address 
FROM tblAdr A 
WHERE A.pkey IN (SELECT b.pkey FROM tblMachine b WHERE b.ADDRESS_PKEY IS NULL) 
0

を使用IN代わり=のあなたのサブクエリが複数の一致する行を返すよう。

SELECT top 1 address 
FROM tblAdr A 
WHERE A.pkey IN 
    (SELECT b.pkey FROM tblMachine b WHERE b.ADDRESS_PKEY IS NULL 
); 

また、常に次の順序でトップのクエリを使用します。

0

このサブクエリは、「b.ADDRESS_PKEYがnull tblMachine bからb.pkeyを選択し、」あなたは「=」operator.butあなたはこの句

関連する問題

 関連する問題