查找两个表之间的匹配对并返回要插入的第三个值
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.
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
| ID | img_id | post_parent |
|-----|-------------------------|-------------|
| 101 | W048zewxemq1tw0810aiec | 1 |
| 102 | W0481l2lv4npdczok5mmucl | 2 |
| 103 | W0481j9w7fg80b8gkiida85 | 3 |
我正在使用 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.
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
| ID | img_id | post_parent |
|-----|-------------------------|-------------|
| 101 | W048zewxemq1tw0810aiec | 1 |
| 102 | W0481l2lv4npdczok5mmucl | 2 |
| 103 | W0481j9w7fg80b8gkiida85 | 3 |