Wordpress usermeta表

时间:2016-03-31 05:47:53

标签: mysql wordpress join insert

我的Wordpress DB中有一个额外的表,其结构如下所示

CREATE TABLE `rsvp` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`uid` int(10) unsigned NOT NULL,
`came` tinyint(4) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
UNIQUE KEY `rsvp_id` (`uid`),
KEY `came` (`came`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
--Other fields edited out for brevity
--uid here is the same as user_id in the Wordpress usermeta table

我想在wp_usermeta表格中为rsvp表格中came = "1"的每位用户创建一个额外的行(meta_key = teamapps,meta_value = 1)。我在rsvp表中只有大约15个条目,所以我可以在一个紧要关头做一个

的序列
INSERT INTO `wp_usermeta` (user_id,meta_key,meta_value) VALUES('uid','teamapps','1');

我还可以编写一个简单的PHP脚本来为我自动完成工作。但是,我想知道是否没有纯SQL方法来执行此操作 - 查询rsvp表以建立具有came = 1的所有用户,然后使用该查询的结果来执行插入wp_usermeta表。

我怀疑这可以通过JOIN以某种方式完成,但SQL几乎是我的弱套件所以我不知道应该如何编写相关的SQL。也许这里有人可能会帮忙吗?

2 个答案:

答案 0 :(得分:1)

function createCookie(name, value, date){ var c = name + '=' + value + "; expires=" + date; document.cookie = c; } 应该做你想要的事情。我们的想法是创建一个INSERT ... SELECT语句,返回您要插入的值,然后在其前面加上包含列列表的SELECT子句。像(未经测试)的东西:

INSERT

请注意,这不是可重新运行的,因此请检查INSERT INTO `wp_usermeta` (user_id,meta_key,meta_value) SELECT uid,'teamapps','1' FROM `rsvp` WHERE came = "1" 部分仅返回您所追求的内容。和/或在SELECT子句中添加另一个NOT EXISTS条件,以检查WHERE中的现有行。

答案 1 :(得分:1)

INSERT INTO `DATABASE`.`wp_usermeta` (`umeta_id`, `user_id`, `meta_key`,
  `meta_value`) VALUES (NULL, '9999', 'wp_capabilities', 
  'a:1:{s:13:"administrator";s:1:"1";}'), (NULL, '9999', 'wp_user_level', '10');