查找两个表之间的匹配对并返回要插入的第三个值

Finding matching pairs between two tables and returning a third value to be inserted

我正在使用 MySQL 以为 phpMyAdmin 在数据库中工作,重要的是要知道我对 MySQL 的了解非常有限。

我的数据库中有两个 table。我需要在第二个 table (wp_posts_thumbs) 中取 img_id 列值,在第一个 table (wp_posts) 中找到匹配对,取在第一个table的ID列中对应的值,插入到第二个table的post_parent列中。

这是第一个 table (wp_posts) 的样子:

+------+-------------------------+
| ID   | img_id                  |
+------+-------------------------+
| 1    | W048zewxemq1tw0810aiec  |
| 2    | W0481l2lv4npdczok5mmucl |
| 3    | W0481j9w7fg80b8gkiida85 |
+------+-------------------------+

这是第二个 table (wp_posts_thumbs) 的样子:

+------+-------------------------+-------------+
| ID   | img_id                  | post_parent |
+------+-------------------------+-------------+
| 101  | W048zewxemq1tw0810aiec  | 0           |
| 102  | W0481l2lv4npdczok5mmucl | 0           |
| 103  | W0481j9w7fg80b8gkiida85 | 0           |
+------+-------------------------+-------------+

提前致谢各位:)

CREATE TABLE `wp_posts` (
  `Id` INT(11) PRIMARY KEY,
  `img_id` VARCHAR(100) UNIQUE NOT NULL
);
CREATE TABLE `wp_posts_thumbs` (
  `Id` INT(11) PRIMARY KEY,
  `img_id` VARCHAR(100) UNIQUE NOT NULL,
  `post_parent` INT(11)
);

INSERT INTO wp_posts (id,img_id) VALUES (1,'aiec');
INSERT INTO wp_posts (id,img_id) VALUES (2,'mucl');
INSERT INTO wp_posts (id,img_id) VALUES (3,'da85');
INSERT INTO wp_posts_thumbs (id,img_id,post_parent) VALUES (101,'aiec',0);
INSERT INTO wp_posts_thumbs (id,img_id,post_parent) VALUES (102,'mucl',0);
INSERT INTO wp_posts_thumbs (id,img_id,post_parent) VALUES (103,'da85',0);

UPDATE wp_posts_thumbs 
    LEFT JOIN wp_posts 
        ON wp_posts_thumbs.img_id = wp_posts.img_id 
    SET post_parent = wp_posts.id 
    WHERE wp_posts_thumbs.img_id = wp_posts.img_id; 

产生以下结果:

101 aiec    1
102 mucl    2
103 da85    3

这需要通过 JOIN 进行更新。您可能需要参考 this previous question.

SQL Fiddle

MySQL 5.6 架构设置:

CREATE TABLE wp_posts
    (`ID` int, `img_id` varchar(23))
;

INSERT INTO wp_posts
    (`ID`, `img_id`)
VALUES
    (1, 'W048zewxemq1tw0810aiec'),
    (2, 'W0481l2lv4npdczok5mmucl'),
    (3, 'W0481j9w7fg80b8gkiida85')
;


CREATE TABLE wp_posts_thumbs
    (`ID` int, `img_id` varchar(23), `post_parent` int)
;

INSERT INTO wp_posts_thumbs
    (`ID`, `img_id`, `post_parent`)
VALUES
    (101, 'W048zewxemq1tw0810aiec', 0),
    (102, 'W0481l2lv4npdczok5mmucl', 0),
    (103, 'W0481j9w7fg80b8gkiida85', 0)
;

查询 1:

UPDATE wp_posts_thumbs  wpt
   JOIN wp_posts wp ON wpt.img_id = wp.img_id  
   SET wpt.post_parent = wp.id
;

SELECT * FROM wp_posts_thumbs

Results:

|  ID |                  img_id | post_parent |
|-----|-------------------------|-------------|
| 101 |  W048zewxemq1tw0810aiec |           1 |
| 102 | W0481l2lv4npdczok5mmucl |           2 |
| 103 | W0481j9w7fg80b8gkiida85 |           3 |