2016-06-17 2 views
0

クエリに何が問題なのですか?そのエラーを返すエラーが発生しました - サブクエリが1つ以上の値を返しました。クエリに何が問題なのですか。

サブクエリは2つ以上の値を返しました。 =、!=、<、< =、>、> =、またはサブクエリが式として使用されている場合は、これは許可されません。

Select top 1 name, 
      email, 
      [password] 
FROM [MyPeople_DataVersion2].[dbo].[user] 
WHERE id = (
    Select userid 
    FROM [MyPeople_DataVersion2].[dbo].[EmployerUser] 
    WHERE empusertype=1 and employerid=96 
    ) 
+0

**この予定は何ですか**としますか? – Mureinik

+0

[MyPeople_DataVersion2]。[dbo]。[EmployerUser]テーブルから、empusertypeが1でemployeridが96の複数のレコードが返されています...あなたのクエリをJOINに変更することをお勧めします。 – Shaneis

+0

とは別に、サブクエリでトップ1を使用することもできます – KumarHarsh

答えて

1

INキーワードではなく=

Select top 1 name, email, password FROM [MyPeople_DataVersion2].[dbo].[user] 
WHERE id IN (Select userid FROM [MyPeople_DataVersion2].[dbo].[EmployerUser] 
WHERE empusertype=1 and employerid=96) 
1
SELECT TOP 1 
     name 
     ,email 
     ,password 
FROM MyPeople_DataVersion2.dbo.[user] usr 
JOIN MyPeople_DataVersion2.dbo.EmployerUser empUsr 
ON  usr.id = empUsr.userid 
WHERE empUsr.empusertype = 1 
     AND empUsr.employerid = 96 
2

を試してみてくださいあなたのクエリ

Select userid 
FROM [MyPeople_DataVersion2].[dbo].[EmployerUser] 
WHERE empusertype=1 and employerid=96 

は1つの以上の要素を返しました。これらのレコードのフィールドがuseridの場合は、=の代わりにINオペレータを使用してください。また、これを試してください:それはユニークuseridを返し

Select distinct userid 
FROM [MyPeople_DataVersion2].[dbo].[EmployerUser] 
WHERE empusertype=1 and employerid=96 

、あなたは文句を言わない同等のものを得るようにします。

関連する問題