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

时间:2015-10-25 00:50:14

标签: mysql phpmyadmin string-matching multiple-tables

我在MySQL的数据库中工作过phpMyAdmin,知道我对MySQL的了解非常有限,这很重要。

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

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

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

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

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

先谢谢你,伙计们:)

2 个答案:

答案 0 :(得分:1)

101 aiec    1
102 mucl    2
103 da85    3

产生以下内容:

{{1}}

答案 1 :(得分:0)

这需要UPDATE with 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 |