下面的代码匹配两个表的结果,并从中返回多个结果。所以这部分代码起作用了:`
SET @t1 :=
(SELECT
user_id
FROM
test.wp_usermeta wp_usermeta,
test.subs subs
WHERE
wp_usermeta.meta_value = subs.email
);
SET @t2 :=
(SELECT
cusid
FROM
test.wp_usermeta wp_usermeta,
test.subs subs
WHERE
wp_usermeta.meta_value = subs.email
);`
但是,当我尝试用它来执行input函数时,它只添加了一行,而实际上我希望它为上面代码给出的所有结果添加新行。下面是插入函数的代码:
SET @t1 :=
(SELECT
user_id
FROM
test.wp_usermeta wp_usermeta,
test.subs subs
WHERE
wp_usermeta.meta_value = subs.email
);
SET @t2 :=
(SELECT
cusid
FROM
test.wp_usermeta wp_usermeta,
test.subs subs
WHERE
wp_usermeta.meta_value = subs.email
);
INSERT test.wp_usermeta(umeta_id, user_id, meta_key, meta_value)
VALUES (NULL, @t1, "_stripe_customer_id", @t2)
我收到以下错误消息:
Query: SET @t1 error : Subquery returns more than 1 row
Query: SET @t2 error : Subquery returns more than 1 row
这是唯一的成功信息:
INSERT test.wp_usermeta(umeta_id, user_id, meta_key, meta_value)
VALUES (NULL, @t1, "_stripe_customer_id", @t2) : affected rows : 1
如有任何建议,将不胜感激,提前谢谢。
1条答案
按热度按时间j7dteeu81#
不能将多行分配给标量变量。但也许你想用
INSERT ... SELECT
像下面这样?这将插入查询的所有结果以及该文本。您还应该考虑使用显式连接语法,而不是将字符串文字括在双引号中。这就是单引号在sql中的作用。