我正在构建一个 UPDATE 查询,该查询受子查询中包含的WHERE子句的约束。
当我将其限制为以下内容时,此查询有效:
WHERE id=
(
SELECT
u.id
FROM USER u
WHERE
u.live = 1
)
但是我的查询需要子查询中的另一个子查询。 下面是我的查询示例;
UPDATE newsletters
SET personalHtml =2
WHERE id=
(
SELECT
u.id,
(SELECT
COUNT(lo.userId)
FROM
list_members_login lo
WHERE
u.id = lo.userId
) as totalLogins
FROM
user u
WHERE
u.live = 1
AND
u.jobId IN (2,4)
GROUP BY
u.id
HAVING
totalLogins >= 4
)
我收到以下错误消息:
操作数应包含1列
答案 0 :(得分:0)
u.id
和totalLogins
。 尝试以下代码。希望这有效。
UPDATE newsletters
SET personalHtml =2
WHERE id IN
(
SELECT
u.id
FROM
user u
WHERE
u.live = 1
AND
u.jobId IN (2,4)
GROUP BY
u.id
HAVING
(SELECT
COUNT(lo.userId)
FROM
list_members_login lo
WHERE
u.id = lo.userId
) >= 4
)
答案 1 :(得分:0)
在子查询中,您有2列因此错误,从子查询中删除totalLogins。
另请注意,如果您的子查询返回的值超过1,则会再次给出错误,说明子查询返回的值超过1。请使用in而不是=