0
SELECT [SKULL].[dbo].[reports].[idnumber], [SKULL].[dbo].[reports].[subid] 
FROM [SKULL].[dbo].[reports] 
WHERE reportColumn =  (SELECT DISTINCT(reportColumn)
                       FROM [SKULL].[dbo].[reports] 
                       WHERE [SKULL].[dbo].reports.reportColumn 
                       LIKE '%someword%')

エラーメッセージが表示されます

Msg 512, Level 16, State 1, Line 2
Subquery returned more than 1 value. 
This is not permitted when the subquery follows =, !=, <, <= , >, >= or 
when the subquery is used as an expression.

ありがとう。

4

5 に答える 5

2

あなたがここで何をしようとしているのかよくわかりません。レポート列がすべて同じ単語を含むレポート列ウォールの個別のリストと一致するすべてのレポートレコードを返したい場合は、作業が多すぎます。あなたはこれを書くことができます:

SELECT [SKULL].[dbo].[reports].[idnumber], [SKULL].[dbo].[reports].[subid] 
FROM [SKULL].[dbo].[reports] 
WHERE reportColumn LIKE '%someword%';

これが希望どおりでない場合は、クエリ、特に列名とテーブル名を確認してください。それでもクエリの記述方法がわからない場合は、値の例と期待される結果を投稿してください。

于 2012-12-22T22:46:30.857 に答える
1

サブクエリが複数の行を返す場合は、としてではなく使用しINます=

SELECT [SKULL].[dbo].[reports].[idnumber], [SKULL].[dbo].[reports].[subid] 
FROM [SKULL].[dbo].[reports] 
WHERE reportColumn IN  (SELECT DISTINCT(reportColumn)
                       FROM [SKULL].[dbo].[reports] 
                       WHERE [SKULL].[dbo].reports.reportColumn 
                       LIKE '%someword%')

また

サブクエリが単一の行を返すことが確実な場合は、次のように使用します。

SELECT [SKULL].[dbo].[reports].[idnumber], [SKULL].[dbo].[reports].[subid] 
FROM [SKULL].[dbo].[reports] 
WHERE reportColumn =  (SELECT top(1) DISTINCT(reportColumn)
                       FROM [SKULL].[dbo].[reports] 
                       WHERE [SKULL].[dbo].reports.reportColumn 
                       LIKE '%someword%' order by idnumber)
于 2012-12-22T19:57:59.317 に答える
0

等式テストであるを実行しています。where field=subqueryサブクエリMUStは、 1つの値を持つ1つの行などのSINGLE値を返します。2つのフィールドではなく、2つの行になりました。複数の行を返す場合は、である必要がありますwhere field IN (subquery)

于 2012-12-22T19:22:49.847 に答える
0

エラーが示すように、サブクエリは1つのレコードしか返すことができません。これを行うためにを使用TOP 1してみてください。

SELECT [SKULL].[dbo].[reports].[idnumber],  [SKULL].[dbo].[reports].[subid] FROM [SKULL].[dbo].[reports] WHERE reportColumn =  (SELECT TOP 1 reportColumn
  FROM [SKULL].[dbo].[reports] WHERE [SKULL].[dbo].reports.reportColumn LIKE '%someword%')
于 2012-12-22T19:23:44.323 に答える
0

エラーの理由:単一の値を複数の値と比較しようとしています。

解決策:内部クエリを制限して1つの値を返すか、where条件を変更して複数の戻り値セットと比較します。

単一の値と比較:SELECT [SKULL]。[dbo]。[reports]。[idnumber]、[SKULL]。[dbo]。[reports]。[subid]FROM[SKULL]。[dbo]。[reports]WHERE reportColumn =(SELECT TOP1 reportColumnFROM[SKULL]。[dbo]。[reports]WHERE[SKULL]。[dbo].reports.reportColumnLIKE'%someword%')

また

マルチリターンセットとの比較

SELECT [SKULL]。[dbo]。[reports]。[idnumber]、[SKULL]。[dbo]。[reports]。[subid]FROM[SKULL]。[dbo]。[reports]WHEREreportColumn in (SELECT DISTINCT (reportColumn)FROM[SKULL]。[dbo]。[reports]WHERE[SKULL]。[dbo].reports.reportColumn LIKE'%someword%')

于 2012-12-22T19:30:07.633 に答える