[英]UPDATE With Subquery, Left Join
我正在建立一個受子查詢中包含的WHERE子句約束的UPDATE查詢。
當我將查詢限制為以下內容時,此查詢有效:
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列
u.id
和totalLogins
在SELECT子句。 嘗試下面的代碼。 希望這行得通。
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
)
在您的子查詢中,您有2列,因此出現錯誤,請從子查詢中刪除totalLogins。
還需要注意的是,如果您的子查詢返回的值大於1,它將再次給您錯誤,指出子查詢返回的值大於1.考慮使用in代替=
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.