更新查询不会影响数据库中的所有行

发布于 2024-09-03 05:16:14 字数 538 浏览 2 评论 0原文

我有以下查询......

UPDATE vehicle_catalog SET parent_id = 0 WHERE parent_id = SUBSTR(id, 0, 5)

我需要将所有 parent_id 设置为 0,其中 id 的前 5 个字符与parent_id 相同。当我查看数据时,这会影响 0 行,而它应该会影响超过 10,000 行。

关于为什么这不会影响所有行的任何想法?

更新 如果我这样做了,我不明白什么 UPDATE SET col = '1' 它会影响整个数据库,但我的查询并未在整个数据库上运行。

更新 正确的解决方案:

UPDATE `vehicle_catalog` SET parent = 0 WHERE SUBSTRING(id FROM 1 FOR 6) == SUBSTRING(parent_id FROM 1 FOR 6)

I have the following query....

UPDATE vehicle_catalog SET parent_id = 0 WHERE parent_id = SUBSTR(id, 0, 5)

I need to set all parent_ids to 0 where the first 5 characters of id is the same as the parent_id. This is effecting 0 rows when I'm looking at the data and it should be effecting over 10,000.

Any ideas on why this wouldn't be effecting all rows?

UPDATE
What I don't understand if I did
UPDATE SET col = '1' it would effect the whole database, yet my query isn't run on the whole database.

UPDATE
The proper solution:

UPDATE `vehicle_catalog` SET parent = 0 WHERE SUBSTRING(id FROM 1 FOR 6) == SUBSTRING(parent_id FROM 1 FOR 6)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

杀手六號 2024-09-10 05:16:14

MySQL 中的 SUBSTR() 使用 1-基于索引。试试这个:

UPDATE vehicle_catalog SET parent_id = 0 WHERE parent_id = SUBSTR(id, 1, 5)

另外,请参阅我关于使用 SELECT 查询来验证您的条件是否正确构造的评论。

SUBSTR() in MySQL uses 1-based indexing. Try this:

UPDATE vehicle_catalog SET parent_id = 0 WHERE parent_id = SUBSTR(id, 1, 5)

Also, see my comment on using a SELECT query to verify that your condition is correctly constructed.

萌︼了一个春 2024-09-10 05:16:14

只是一个猜测,但是

WHERE Parent_id = SUBSTR(id, 0, 5),或者,应该是...

WHERE SUBSTR(parent_id, 0, 5) = SUBSTR(id, 0, 5)

just a guess, but

WHERE parent_id = SUBSTR(id, 0, 5), or, should it be...

WHERE SUBSTR(parent_id, 0, 5) = SUBSTR(id, 0, 5)
乜一 2024-09-10 05:16:14

您的更新只会影响所写的一行。例如,如果 ID 为 12345678,则您的查询只会更新第 12345 行。您可以尝试这样做

UPDATE vehicle_catalog SET parent_id = 0 
WHERE parent_id like concat(SUBSTR(id, 0, 5), "%");

your update will only affect a single row as written. for instance, if the ID was 12345678, your query would only update row 12345. You might try this

UPDATE vehicle_catalog SET parent_id = 0 
WHERE parent_id like concat(SUBSTR(id, 0, 5), "%");
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文