根据此SQL Update info using other record from the same table
的信息和帮助我注意到它没有正常工作。
问题是:
它将表NOEUD与从内连接中的子查询创建的表连接起来。 它仅更新子查询表中的noeud,而不更新noeud表中的所有节点。
在子查询上正确选择(列出具有1m电缆距离的noeud.n_amont = noeud.noeud的所有字段)因为n_amont是先前的noeud。我想从选择中更新所有n_amont,它与整个表noeud中的对应noeud相匹配。
提前致谢。
UPDATE [SELECT noeuds.* FROM noeuds WHERE (((noeuds.LONG_CABLE)=" 1") AND (noeuds.DELETED=" "))]. AS a INNER JOIN noeuds AS n ON a.n_amont=n.noeud SET n.INSEE_COM = a.INSEE_COM, n.RIVOLI = a.RIVOLI, n.NUM_VOIE = a.NUM_VOIE
WHERE ((n.INSEE_COM)=" ");
有人可以帮忙吗?
编辑:
我有这张桌子(noueds):
NOEUD TYPE_MAT N_AMONT LONG_CABLE RIVOLI (+3 fields for update)
123 REP 100 12 abc
130 AMP 229 12
173 PPP 130 1 AAA
我想写一个UPDATE查询来填充NODES.LONG_CABLE = 1之后的节点的所有数据ADDRESS。
例如:
我搜索了所有LONG_CABLE = 1的节点,给了我noeud 173;那么130之前的节点应该具有相同的rivoli 173。
此电缆为我提供了某些街道上安装的此设备的地址。当我填写PPP(类型)时,它不会将地址转换为同一极点或人孔(距离1米=连接器)的地址。
通过我发布的这个查询,我可以选择具有前一个节点的节点(173),但是当加入它时,只加入n_amont 130(节点相关130),如果它距其他装备1米远。在这种情况下,它将被忽略,并且地址不会更新。 查询可以在表NOEUDS上运行,然后找到需要更新的装备。
更难以解决这个问题吗?
答案 0 :(得分:1)
请改为尝试:
UPDATE noeuds INNER JOIN
(SELECT noeuds.* FROM noeuds WHERE (((noeuds.LONG_CABLE)=" 1") AND (noeuds.DELETED=" "))) a ON noeuds.n_amount = a.n_amount
SET noeuds.insee_com = a.insee_com, noeuds.rivoli = a.rivoli, noeuds.num_voie = a.num_voie