Sql 当子查询未引入EXISTS时,只能在选择列表中指定一个表达式
你能告诉我这个问题出了什么问题吗 为什么它会通过错误: “当 子查询未与EXISTS一起引入。“Sql 当子查询未引入EXISTS时,只能在选择列表中指定一个表达式,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,你能告诉我这个问题出了什么问题吗 为什么它会通过错误: “当 子查询未与EXISTS一起引入。“ 您必须在谓词中使用,而不是=,以防您必须比较WHERE子句返回的多个值,因此在查询中,而不是 (SELECT Dbo.DecryptString(LastName) + '', '' + Dbo.DecryptString(FirstName) as PatientName FROM Persons.Informations WHERE PersonId = (SELECT P
您必须在谓词中使用
,而不是=
,以防您必须比较WHERE
子句返回的多个值,因此在查询中,而不是
(SELECT
Dbo.DecryptString(LastName) + '', '' +
Dbo.DecryptString(FirstName) as PatientName
FROM Persons.Informations
WHERE PersonId = (SELECT PersonId
FROM Patients.Informations
WHERE PatientId = TST.PatientId))
From Transactions.SessionTransaction TST ON TST.PaymentId = TP.PaymentId
请尝试以下方法:
WHERE PersonId = (SELECT PersonId
FROM Patients.Informations
WHERE PatientId = TST.PatientId)
但是,您可以直接联接
表,而不是在
中使用此谓词,如下所示:
...
WHERE PersonId IN (SELECT PersonId
FROM Patients.Informations
WHERE PatientId = TST.PatientId)
...
如果您试图将姓和名组合在一起,并用逗号分隔,则引号太多:
SELECT
...
FROM Persons.Informations i
INNER JOIN Transactions.SessionTransaction TST ON i.PersonId = TST.PersonId
INNER JOIN ... TP ON TST.PaymentId = TP.PaymentId
您的原始查询试图返回两列—姓氏加上一个空字符串(实际上是no-op),而名字加上一个空字符串(同样,实际上是no-op)
(SELECT
Dbo.DecryptString(LastName) + ', ' +
Dbo.DecryptString(FirstName) as PatientName
FROM Persons.Informations
WHERE PersonId = (SELECT PersonId
FROM Patients.Informations
WHERE PatientId = TST.PatientId))
From Transactions.SessionTransaction TST ON TST.PaymentId = TP.PaymentId