我的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。也许这里有人可能会帮忙吗?
答案 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');