我正在创建我的第一个左连接,我遇到了语法错误。我一直在这个列表中上下,我无法确定问题是什么。这是设置
我有三个表Mass_List
,Parent
和Parent_Place
。它们都具有相同的ID,但我需要从Date_Close
获取Mass_List
,从ID
获取Username
和Parent
,以确保用户是付费会员,由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;
答案 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