0

使用同一表中的其他记录遵循这一 SQL 更新信息中的信息和帮助

我注意到它没有正确地完成工作。

问题是:

它将表 NOEUD 与从内部连接内的子查询创建的表连接起来。它只更新子查询表中的 noeud,而不是 noeud 表中的所有节点。

由于 n_amont 是前一个 noeud,因此在子查询中正确进行了选择(列出所有具有 noeud.n_amont = noeud.noeud 且电缆距离为 1m 的字段)。我想从与整个表 noeud 中的对应 noeud 匹配的选择中更新所有 n_amont。

提前致谢。

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)="     ");

任何人都可以帮忙吗?

编辑:


我有这张桌子(noues):

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。

例如:

我搜索了所有具有 LONG_CABLE = 1 的节点,给了我 noeud 173;那么 130 之前的节点应该具有相同的 rivoli 173。

这条电缆给了我安装在某些街道上的设备的地址。当我填写 PPP(类型)时,它不会将地址转换为同一杆或沙井(1 m 距离 = 连接器)的地址。

通过我发布的这个查询,我可以选择具有前一个(173)的节点,但是当加入它时,如果它与其他设备相距 1m,则仅加入 n_amont 130(与节点相关的 130)。在这种情况下,它会被忽略并且地址不会更新。该查询将在 NOEUDS 表上运行,然后找到需要更新的设备。

还有更多关于解决此问题的建议吗?

4

1 回答 1

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
于 2012-05-11T16:59:59.973 回答