更新自联接表

时间:2014-12-30 15:33:04

标签: mysql sql

我在MySQL表中克隆了几个shop_id = 233到shop_id = 255的类别。该表的结构是:

Table name: **t_category**

fields: id, name, parent_id, shop_id

现在我拥有shop_id = 255的这些克隆类别,但parent_id与shop_id = 233中的类别相关。我应该更新克隆类别的parent_id。

首先,我正在尝试编写一个自连接,如:

SELECT p.id AS 'Parent',
   c.id AS 'Child' 
FROM t_category c
INNER JOIN t_category p ON p.id = c.`parent_id` and c.shop_id = 255

如何更新克隆类别的父ID?

2 个答案:

答案 0 :(得分:0)

认为你要做的是在父记录上设置shop_id,所以这样的事情应该这样做:

UPDATE t_category
    SET shop_id = 233
WHERE id IN (SELECT p.id from t_category c JOIN t_category p ON p.id = c.`parent_id` and c.shop_id = 255)

答案 1 :(得分:0)

好的,如果我理解,你想要在商店255中获取每个ID,在商店233中找到它的相应ID,获得该id的父亲(在233中),然后在商店255中找到相应的父,对吗? / p>

假设每个商店中没有重复的名称,这就是我在SQL Server中的表现方式..对MySQL来说可能是一样的:

UPDATE t255
SET parent_id=p255.id
FROM t_category t255
INNER JOIN t_category t233 ON t255.Name=t233.Name AND t233.shop_id=233
INNER JOIN t_category p233 ON p233.id=t233.parent_id
INNER JOIN t_category p255 ON p255.Name=p233.Name
WHERE t255.shop_id=255