gpt4 book ai didi

mysql - 使用 JOIN 更新的行不是预期值?

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

我已经根据主数据库中的列/行在测试数据库中创建了多个表。

test.websites.url = main.websites.url
test.category_main = main.websites.category1
test.category_01 = main.websites.category2
test.category_02 = main.websites.category3
etc...

The test database columns already contain all the rows from the main database, but I need to add the rows from the respective tables to the category_to_website table and create foreign keys because there is currently no relation between them in the test database. That is why I have joined the main database in the query.

当尝试使用主表作为更新测试数据库中现有行的引用时,某些值会被更新,但它们并不总是正确的。 我正在从测试数据库执行查询。

我的查询:

UPDATE category_to_website
LEFT JOIN main.websites
ON websites.url = main.websites.url
LEFT JOIN category_01
ON category_01.name = main.websites.category2
SET category_to_website.category_01_id = category_01.id
WHERE category_to_website.category_01_id = main.websites.category2

我的数据库架构:

enter image description here

我怀疑问题出在我正在执行的 JOIN 类型上,但我尝试过 LEFT JOINJOIN,和 INNER JOIN 并得到相同的结果。我认为也许我需要一个 SELECT 子查询,或者我的 WHERE 子句已关闭?

编辑
根据评论,我能够把这一切都解决了。这是我采取的步骤。
1. 将 category_* 表合并为 category 表。
2. 将 test.websites 表加入到查询中。

UPDATE test.category_to_website
LEFT JOIN test.websites
ON test.websites.id = category_to_website.url_id
RIGHT JOIN main.websites
ON test.websites.url = main.websites.url
INNER JOIN test.category
ON test.category.name = main.websites.category1
SET category_to_website.category01_id = category.id
WHERE category_to_website.url_id = test.websites.id

最佳答案

UPDATE category_to_website
JOIN websites
ON websites.id = category_to_website.url_id
JOIN main.websites
ON websites.url = main.websites.url
JOIN category
ON category.name = main.websites.category1
SET category_to_website.category01_id = category.id

SET 对参与 JOIN 的行进行。但是,如果您 LEFT JOINcategory_to_website,那么它的所有行都参与,因此您必须将它们限制在 WHERE 中,就像您在 ON 中已经做的那样 .

谢天谢地你已经开始将那个可怕的模式联系起来了。继续:将每个表中的所有多个 categery_ 列替换为仅一个用于 id 或 name 的 category 列。如果您为它们category_idcategory_name命名,它们的性质就会很清楚。 (也许将您的下一个版本作为新问题发布。)

关于mysql - 使用 JOIN 更新的行不是预期值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27208739/

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