以下是一个示例结构:
table `pligg`
#id #alpha #num
1 a null
2 b null
3 c null
4 a null
5 d null
6 b null
7 a null
8 e null
我想在单个mysqli查询之后更新像这样的数据库:
table `pligg`
#id #alpha #num
1 a 1
2 b 1
3 c 1
4 a 2
5 d 1
6 b 2
7 a 3
8 e 1
我要做的是使用重复次数更新列num
。
我尝试了这个查询,但徒劳无功
mysqli_query($mysqli, "UPDATE pligg SET 'num' = COUNT(DISTINCT alpha) WHERE 'id'<id");
答案 0 :(得分:4)
这应该可以解决问题:
UPDATE pligg a
INNER JOIN
(
SELECT a.id, a.alpha, COUNT(1) AS dup_cnt
FROM pligg a
INNER JOIN pligg b ON a.id >= b.id AND a.alpha = b.alpha
GROUP BY a.id, a.alpha
) b ON a.id = b.id
SET a.num = b.dup_cnt