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

时间:2016-02-24 19:08:16

标签: mysql syntax-error inner-join

我正在创建我的第一个左连接,我遇到了语法错误。我一直在这个列表中上下,我无法确定问题是什么。这是设置

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

我将查询分开并且它们可以工作但是当我一起执行查询时它告诉我我的语法是正确的但是给了我以下错误

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;

1 个答案:

答案 0 :(得分:0)

我不确定你为什么首先需要这个子选项...只需将所有3个表连接在一起......虽然我觉得奇怪的是每个表中的“ID”列是将它们连接在一起的。好像你试图加入每个表的PK,这不是他们应该加入的方式,除非每个表真的是与另一个表的1-1关系...然后我会说有趣的表设计。

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