mysql - phpmyadmin 更新 m 到 n 关系表以从单独的表中删除重复项

标签 mysql phpmyadmin

我有 2 张 table 。

CREATE TABLE designs
    ( game_id       INT     NOT NULL,
      des_id        INT     NOT NULL,
      PRIMARY KEY(game_id, des_id),
      FOREIGN KEY(game_id) REFERENCES Game(id),
      ON UPDATE CASCADE)

CREATE TABLE designer
    ( name      VARCHAR(30)     NOT NULL,
      id        INT             NOT NULL,
      PRIMARY KEY(id),
      FOREIGN KEY(id) REFERENCES designs(des_id),
      ON UPDATE CASCADE);    

假设我有数据:

设计:

0---0

0---1

1---2

2---3

2---4

………………

设计师:

鲍勃---0

吉尔---1

鲍勃---2

罗布---3

吉尔---4

更新后,我希望“设计”表看起来像:

0---0

0---1

1---0

2---3

2---1

我需要什么更新查询才能完成此操作?

我尝试过的一些查询是:

UPDATE designs
SET des_id = (
SELECT a.id
FROM designer as a
JOIN designer as b
ON a.name=b.name AND a.id < b.id
WHERE des_id = b.id);    

...

UPDATE `designs` as a
JOIN designer as b
ON a.des_id=b.id
SET a.des_id = b.id
WHERE b.id = (
SELECT c.id
FROM designer as c
LEFT JOIN designer as d
ON c.name=d.name
WHERE c.id<d.id)

最佳答案

这是一个想法。请注意,它使用了“group by/order by”技巧形式的记录黑客:

UPDATE designs d 
 JOIN 
    ( select d1.id matcher_id 
           , d2.id select_id 
        from `designer` d1  
        JOIN designer d2 
          ON d1.name = d2.name 
       group 
          by d1.id 
       Order 
          by d2.id
    ) x  
   ON x.matcher_id = d.des_id 
  SET d.des_id = select_id

关于mysql - phpmyadmin 更新 m 到 n 关系表以从单独的表中删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27077092/

相关文章:

php - 登录系统中 undefined variable session

mysql - ROR 中的联系电话文本字段表单错误

phpmyadmin 无法通过 phpMyAdmin 从我的 EC2 连接到 RDS 数据库?

mysql - 我在 Cent 操作系统上安装了 PhpMyAdmin。我可以通过 Windows 8 访问它吗?

php - Html2Pdf 中的分页符

java - 如何让SQL连接语句通用

php - 警告 : mysql_fetch_assoc():

mysql - 更新行检查重复项

mysql - 当我尝试在 MariaDB 数据库上创建此函数(使用点数据类型)时,为什么会出现此错误?

php - 如何在'sudo apt-get install lampp-server ^之后获得phpmyadmin