MySQL 根据查询更新行
MySQL Update Row from Query
我有一个复杂的(对我来说!)查询,它基本上是从 2 table 中获取数据,然后将它们分组在一起(这个位作为 SELECT 查询 100% 工作)
但是当我现在需要在另一个 table 中更新数据库时,它不会工作。
我知道了:
UPDATE
exp_channel_data data,
(
SELECT
posts.cat_id,
posts.entry_id,
cats.cat_name,
cats.cat_id,
GROUP_CONCAT('{"',cats.cat_name, '"}:{"',cats.cat_name,'"}') as category_tag
FROM
exp_category_posts posts,
exp_categories cats
WHERE
cats.cat_id = posts.cat_id
GROUP BY
posts.entry_id
) category
SET
data.field_id_178 = category.category_tag
WHERE
data.entry_id = category.entry_id;
但是我收到了这个错误:
Duplicate column name 'cat_id'
我认为是因为我试图在两个 table 之间建立联系,但它没有链接。
就像我说的,SELECT 查询是独立运行的,但是当放入 UPDATE 时 - 它只会抛出这个错误。
:(
您非常接近您的需求:
UPDATE exp_channel_data data JOIN
(SELECT posts.entry_id,
GROUP_CONCAT('{"',cats.cat_name, '"}:{"',cats.cat_name,'"}') as category_tag
FROM exp_category_posts posts JOIN
exp_categories cats
ON cats.cat_id = posts.cat_id
GROUP BY posts.entry_id
) category
ON data.entry_id = category.entry_id
SET data.field_id_178 = category.category_tag;
重要的部分是从子查询中删除 cats.cat_id
。您有两列具有该名称,令人困惑 MySQL.
我还修复了查询以使用正确、明确的 JOIN
语法。
我有一个复杂的(对我来说!)查询,它基本上是从 2 table 中获取数据,然后将它们分组在一起(这个位作为 SELECT 查询 100% 工作)
但是当我现在需要在另一个 table 中更新数据库时,它不会工作。
我知道了:
UPDATE
exp_channel_data data,
(
SELECT
posts.cat_id,
posts.entry_id,
cats.cat_name,
cats.cat_id,
GROUP_CONCAT('{"',cats.cat_name, '"}:{"',cats.cat_name,'"}') as category_tag
FROM
exp_category_posts posts,
exp_categories cats
WHERE
cats.cat_id = posts.cat_id
GROUP BY
posts.entry_id
) category
SET
data.field_id_178 = category.category_tag
WHERE
data.entry_id = category.entry_id;
但是我收到了这个错误:
Duplicate column name 'cat_id'
我认为是因为我试图在两个 table 之间建立联系,但它没有链接。
就像我说的,SELECT 查询是独立运行的,但是当放入 UPDATE 时 - 它只会抛出这个错误。
:(
您非常接近您的需求:
UPDATE exp_channel_data data JOIN
(SELECT posts.entry_id,
GROUP_CONCAT('{"',cats.cat_name, '"}:{"',cats.cat_name,'"}') as category_tag
FROM exp_category_posts posts JOIN
exp_categories cats
ON cats.cat_id = posts.cat_id
GROUP BY posts.entry_id
) category
ON data.entry_id = category.entry_id
SET data.field_id_178 = category.category_tag;
重要的部分是从子查询中删除 cats.cat_id
。您有两列具有该名称,令人困惑 MySQL.
我还修复了查询以使用正确、明确的 JOIN
语法。