有返回多个值

问题描述:

我找全已经在子查询的问题。只需要一个眼神敏锐的人来帮忙。谢谢。有返回多个值

SELECT (Select contactid from [tableA].[dbo].tableC where Company = '" & company & "' AND empid = vProfile2.EmpNo) as contactid,vprofile2.EmpNo EmpNo, vprofile2.EmpName EmpName, upper(vprofile2.CompanyCode) CompanyCode, upper(vprofile2.DeptName) DeptName, Upper(vprofile2.JobTitle) JobTitle " & _ 
",Email_add Email,(Select Contact from [tableA].[dbo].tableC where Company = '" & company & "' AND empid = vProfile2.EmpNo) as contact, " & _ 
"(Select Speeddial from [tableA].[dbo].tableC where Company = '" & company & "' AND empid = vProfile2.EmpNo) as Speeddial " & _ 
"FROM [tableA].[dbo].tableC RIGHT JOIN server.tableB.[dbo].[tableD] vprofile2 ON vProfile2.EmpNo = tableC.empid " & _ 
" AND tableC.company=vProfile2.CompanyCode " & _ 
"Inner JOIN server.tableB.[dbo].[tbEmail] vEmail ON vProfile2.EmpNo= vEmail.Emp_No " & _ 
    "WHERE(vprofile2.EmpNo Is Not null) And " & _ 
"vProfile2.CompanyCode = '" & company & "' " & _ 
"ORDER by EmpName " 

我得到一个错误,我试图找到发生了什么。

子查询返回多个值。当子查询遵循=,!=,<,< =,>,> =或当子查询用作表达式时,这是不允许的。

+2

你需要做的第一件事就是了解SQL注入和参数化查询。然后,一旦你的代码是安全的,你可以开始处理子查询问题。 –

+0

我们不知道你的表结构,当前数据,预期结果等等。我不确定你为什么使用子查询 - 当'tableC'已经存在时,它不是一个明显的方式来构造你的查询FROM子句和(由于连接条件)被约束为具有等于“公司”的“公司”值。此外,回声Zohar的评论,你需要使用参数。 –

+0

向我们展示处理后的查询,该代码难以阅读。 – jarlh

这意味着你已经使用了一个子查询的字段中返回的值,子查询可以返回多于每行一个记录:

(Select Speeddial from [tableA].[dbo].tableC where Company = '" & company & "' AND empid = vProfile2.EmpNo) as Speeddial 

确定where子句会这主查询中每个记录只返回一个(或零)结果?