我有2个问题:
UPDATE dws_photogallery_albums a
SET a.photoscount=(
SELECT COUNT(*) FROM dws_photogallery_photos p
WHERE p.albumid=a.albumid)
UPDATE dws_photoportfolio_photos a
SET a.photoscount=(
SELECT COUNT(*) FROM dws_photoportfolio_photos p
WHERE p.albumid=a.albumid)
首先工作正常,但第二个给我错误:
#1093 - You can't specify target table 'a' for update in FROM clause
表格相同(仅按名称不同)。 它能成为什么?
UPD:男人,我很抱歉,这只是我的印记,查询必须是这样的:UPDATE dws_photogallery_albums a
SET a.photoscount=(
SELECT COUNT(*) FROM dws_photogallery_photos p
WHERE p.albumid=a.albumid)
UPDATE dws_photoportfolio_albums a
SET a.photoscount=(
SELECT COUNT(*) FROM dws_photoportfolio_photos p
WHERE p.albumid=a.albumid)
他们都对我有用。 谢谢你的回答,需要更多咖啡
答案 0 :(得分:2)
您正在更新在嵌套选择中使用的同一个表。
你不能这样做:
update table X
where ... ( Select ... from X )
答案 1 :(得分:2)
这意味着您无法更新正在阅读的表格。别名不会解决问题。它可能导致不一致。您必须使用临时表或在您的情况下使用变量。
答案 2 :(得分:2)
这并不奇怪您无法在FROM子句中指定更新目标表。
请注意,您拥有相同的表进行更新,并在第二个查询中选择
答案 3 :(得分:2)
尝试此查询 -
UPDATE
dws_photoportfolio_photos a
JOIN (
SELECT albumid, COUNT(*) cnt FROM dws_photoportfolio_photos GROUP BY albumid
) p
ON p.albumid = a.albumid
SET a.photoscount = p.cnt;