我正在尝试计算表1中的行数,并根据行数更新某一列。下面是我尝试过的查询,但是得到一个arror,说temp不是一个表。
UPDATE table1 AS t1
INNER JOIN table1 AS temp ON temp.id = t1.id
SET
t1.field1 = (CASE
WHEN (SELECT COUNT(*) FROM temp WHERE temp.field1 = 1) < 100 THEN 1
WHEN (SELECT COUNT(*) FROM temp WHERE temp.field1 = 2) < 100 THEN 2
WHEN (SELECT COUNT(*) FROM temp WHERE temp.field1 = 3) < 100 THEN 3
WHEN (SELECT COUNT(*) FROM temp WHERE temp.field1 = 4) < 100 THEN 4
WHEN (SELECT COUNT(*) FROM temp WHERE temp.field1 = 5) < 100 THEN 5
END)
WHERE t1.id IN(100, 200, 300); --Example data
2条答案
按热度按时间uwopmtnx1#
有几件事:
我建议在您的case语句中创建一个临时数据表,然后加入该表进行更新。
重新加入正在更新的表不起作用。
where子句中有语法错误。你在进去之前不需要等号。
尝试:
bogh5gae2#
以下查询将对您有所帮助,