我有一个表'tbl_content'
运行以下查询时,我可以看到11条记录/数据
SELECT ContentID, CategoryID, Home, Inner
FROM tbl_content
WHERE CategoryID = 1 AND Inner = 2
ORDER BY ContentID DESC
运行以下查询时,我可以看到前4条记录/数据
SELECT ContentID, CategoryID, Home, Inner
FROM tbl_content
WHERE CategoryID = 1 AND Inner = 2
ORDER BY ContentID DESC LIMIT 7, 10
我想更新剩余的前4条记录/数据的值。但不幸的是,它正在产生错误。
UPDATE tbl_content
SET Inner = 1
WHERE CategoryID = 1 AND Inner = 2
ORDER BY ContentID DESC LIMIT 7, 10
任何人都可以提出解决方案吗?
答案 0 :(得分:4)
您可以尝试使用IN子句来进行带限制的替换
UPDATE tbl_content SET Inner=1
WHERE CategoryID=1 AND Inner=2
AND ContentID IN (
select contentID from (
select ContentID
from tbl_content
order by ORDER BY ContentID DESC LIMIT 7, 10 ) t
)
或联接
UPDATE tbl_content c
INNER JOIN (
select ContentID
from tbl_content
order by ORDER BY ContentID DESC LIMIT 7, 10
) t on t.ContentID = c.ContentID
SET c.Inner=1
WHERE c.CategoryID=1 AND c.Inner=2
答案 1 :(得分:1)
尝试一下。
UPDATE tbl_content SET Inner=1 WHERE id IN(SELECT ContentId FROM (SELECT ContentID, CategoryID, Home, Inner FROM tbl_content WHERE CategoryID=1 AND Inner=2 ORDER BY ContentID DESC LIMIT 7, 10));