MySQL INSERT使用来自多个表的变量

时间:2014-07-02 17:49:02

标签: mysql sql

我有两个表,我希望使用WordPress中的SQL数据库来比较ID。

以下工作正常:

INSERT INTO entries(author_name) 
SELECT meta_value 
FROM wp_postmeta 
WHERE meta_key = "user_submit_name" AND post_id = '5235';

但我想要做的是比较表条目中的ID和wp_postmeta,只要ID相同,就像这样:

INSERT INTO entries(author_name) 
SELECT meta_value 
FROM wp_postmeta 
WHERE meta_key = "user_submit_name" AND post_id = entries.post_id;

但上述方法无效。 是否可以在一行中执行此操作,还是必须创建一个过程?

1 个答案:

答案 0 :(得分:0)

你可以这样做,你只需要使用一个连接。

INSERT INTO entries(author_name) 
SELECT meta_value 
FROM wp_postmeta
JOIN entries on wp_postmeta.post_id = entries.post_id
WHERE meta_key = "user_submit_name" AND post_id = entries.post_id;

这会将meta_value插入条目表中的post_id,这些条目在wp_postmeta中具有匹配项。这意味着如果您运行insert语句两次,您将尝试两次执行相同的插入。如果这是一个问题,我们可以添加一个子选择不插入重复记录。此外,如果有多个具有相同帖子ID的条目,我们将遇到相同的问题。但是,给定的sql语句应该适用于单个运行,其中条目post_id对于条目表是唯一的。