gpt4 book ai didi

MySql 更新与 JOIN 自己

转载 作者:行者123 更新时间:2023-11-29 08:26:56 24 4
gpt4 key购买 nike

嗨,我有一个查询,它选择了主键 (id) = 1 或外键 = 1 的所有行。这是自己加入。

选择:

SELECT f2.wz AS wz FROM d7x6r_magazyn_faktura_zakupowa f

LEFT JOIN (SELECT id,id_glowna, wz FROM d7x6r_magazyn_faktura_zakupowa )AS f2
ON(((f2.id = f.id_glowna OR f2.id = f.id OR f2.id_glowna = f.id OR f2.id_glowna = f.id_glowna)
AND f2.id_glowna <> 0)
OR ( f2.id = f.id OR f2.id = f.id_glowna))
WHERE f.id = 1 OR f2.id_glowna = 1;

现在我需要将所有行中的单元格 wz 更新为 0。我尝试使用:

UPDATE  d7x6r_magazyn_faktura_zakupowa f

LEFT JOIN (SELECT id,id_glowna, wz FROM d7x6r_magazyn_faktura_zakupowa )AS f2
ON(((f2.id = f.id_glowna OR f2.id = f.id OR f2.id_glowna = f.id OR f2.id_glowna = f.id_glowna)
AND f2.id_glowna <> 0)
OR ( f2.id = f.id OR f2.id = f.id_glowna))

SET f2.wz = 0
WHERE f.id = 1 OR f2.id_glowna = 1;

但是它不起作用,因为 f2.wz 无法更新。

最佳答案

您似乎不需要子选择,并且可以只使用 JOIN:-

UPDATE  d7x6r_magazyn_faktura_zakupowa f
LEFT JOIN d7x6r_magazyn_faktura_zakupowa f2
ON(((f2.id = f.id_glowna OR f2.id = f.id OR f2.id_glowna = f.id OR f2.id_glowna = f.id_glowna)
AND f2.id_glowna <> 0)
OR ( f2.id = f.id OR f2.id = f.id_glowna))
SET f2.wz = 0
WHERE f.id = 1 OR f2.id_glowna = 1;

但是,您有一个 LEFT JOIN,但正在更新 F2,该行可能不存在,因此 INNER JOIN 可能会更好

关于MySql 更新与 JOIN 自己,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17695542/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com