我需要更新一个值,其中该行中的另一个字段在整个表中只出现一次。我写了以下查询,但它不起作用。我怎么写这个?
由于
UPDATE debiteuren_afleveradressen
SELECT COUNT(*) as totalCount
FROM debiteuren_afleveradressen
GROUP BY bedrijf
SET nummer = 1 WHERE totalCount = 1;
答案 0 :(得分:1)
您可以在JOIN
中使用UPDATE
:
UPDATE debiteuren_afleveradressen a
JOIN (
SELECT bedrijf, COUNT(*) as totalCount
FROM debiteuren_afleveradressen
GROUP BY bedrijf
) b ON (a.bedrijf = b.bedrijf AND b.totalCount = 1)
SET a.nummer = 1
答案 1 :(得分:0)
只是猜测
UPDATE debiteuren_afleveradressen
SET nummer = 1 WHERE bedrijf IN(SELECT bedrijf FROM
(SELECT bedrijf FROM debiteuren_afleveradressen
GROUP BY bedrijf HAVING COUNT(*)=1 )as x)
答案 2 :(得分:0)
这是一种方式,它是你想要的直接翻译:
UPDATE debiteuren_afleveradressen
SET nummer = 1
WHERE bedrijf in (SELECT bedrijf
FROM debiteuren_afleveradressen
GROUP BY bedrijf
having count(*) = 1
);
但是,MySQL有一个奇怪的限制,你必须把它写成:
UPDATE debiteuren_afleveradressen
SET nummer = 1
WHERE bedrijf in (select bedrijf
from (SELECT bedrijf
FROM debiteuren_afleveradressen
GROUP BY bedrijf
having count(*) = 1
) t
);
使用此类查询,MySQL可能效率低下。我建议将其改为join
:
UPDATE debiteuren_afleveradressen join
(SELECT bedrijf, count(*) as TotalCount
FROM debiteuren_afleveradressen
GROUP BY bedrijf
) agg
on agg.bedrijf = debiteuren_afleveradressen.bedrijf and
TotalCount = 1
SET nummer = 1;