子查询返回超过 1 个值,语法错误

Subquery returned more than 1 value, syntax error

我正在创建我的第一个左连接,但出现语法错误。我一直在这个列表中上下移动,我不知道是什么问题。这是设置

我有三个表 Mass_ListParentParent_Place。它们都有相同的 ID,但我需要从 Mass_List 获取 Date_Close 以及从 Parent 获取 IDUsername,确保用户是付费会员,由Parent_Place中的MBSHIP列知道。

我分别进行查询并且它们有效但是当我一起进行查询时它告诉我我的语法是正确的但是给我以下错误

Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.

我在网上搜索过,但没有与我的情况相符的。知道我的语法有什么问题吗?这是查询

SELECT P.USERNAME, M.DATE_CLOSE, P.ID 
FROM MASS_LIST M, PARENT P
WHERE P.ID =
          (SELECT M.ID 
           FROM MASS_LIST M 
           INNER JOIN PARENT_PLACE PP ON PP.ID = M.ID
           WHERE PP.CLASS_USR = 'PAID' 
             AND M.DATE_CLOSE > getdate() 
             AND PP.MBSHIP > 0)
 AND M.DATE_CLOSE > GETDATE() ORDER BY M.DATE_CLOSE;

我不确定你为什么首先需要 subslect...只需将所有 3 个 table 连接在一起...虽然我确实觉得 "ID" 列很奇怪在每个 table 中,将它们连接在一起。似乎你试图加入每个 table 的 PK,这不是他们应该加入的方式,除非每个 table 确实是彼此的 1-1 关系......那么我会说有趣的table设计。

SELECT ML.Date_Close, P.ID, P.UserName
FROM mass_List ML
INNER JOIN PARENT P
 on ML.ID = P.ID
INNER JOIN PARENT_PLACE  PP
 on P.ID = PP.ID
WHERE PP.MBSHIP > 0
  and PP.Class_user = 'PAID'
  and M.Date_Close > getDate()
order by m.date_Close