SQL 服务器的语法无效

Invalid syntax for SQL Server

我试图在 SQL 服务器中执行以下查询,但它抛出了一个错误。我该如何解决?

select 
    T.T_Email
from 
    Stu_Question S, Tutor_Answer T
where 
    S.S_Quest_Id = '4f7a1518-a765-40c0-ae53-3ee61eef6673' 
    and S.S_Quest_Id = T.S_Quest_Id 
    and (T_Email,T_Answer_Update_Status) 
        IN (T_Email, Select MAX(T_Answer_Update_Status) 
                     from Tutor_Answer 
                     where S_Quest_Id='4f7a1518-a765-40c0-ae53-3ee61eef6673' 
                     group by T_Email)
    and S.S_Quest_Update_Status = (Select MAX(S_Quest_Update_Status) 
                                   from Stu_Question 
                                   where S_Quest_Id='4f7a1518-a765-40c0-ae53-3ee61eef6673')   

这是您声明中令人反感的部分:

and (T_Email,T_Answer_Update_Status) 
    IN (T_Email, Select MAX(T_Answer_Update_Status) 
                 from Tutor_Answer 
                 where S_Quest_Id='4f7a1518-a765-40c0-ae53-3ee61eef6673' 
                 group by T_Email)

你到底想在这里做什么???

T-SQL 的 IN 运算符一次处理 一个 列 - 像这样:

WHERE T_EMail IN (SELECT EMail FROM .....) 

marc_s 正确指出了您的查询中有问题的部分。

您必须尝试将其转换为联接。这是我的做法:

select T.T_Email
  from Stu_Question S
  join (select T_Email, 
               row_number() over (partition by S_Quest_Id order by S_Quest_Update_Status desc) as rn
          from Tutor_Answer) T
    on T.S_Quest_Id=S.S_Quest_Id 
   and T.rn = 1
 where S.S_Quest_Id='4f7a1518-a765-40c0-ae53-3ee61eef6673'
   AND S.S_Quest_Update_Status=(Select MAX(S_Quest_Update_Status)
                                 from Stu_Question 
                                where S_Quest_Id='4f7a1518-a765-40c0-ae53-3ee61eef6673')

请注意,您绝对可以进一步改进它。但它应该能让你继续前进。