error : Subquery returns more than 1 row when trying to insert variables into multiple rows from 2 tables MYSQL
error : Subquery returns more than 1 row when trying to insert variables into multiple rows from 2 tables MYSQL
以下代码匹配来自 2 个表的结果和 returns 来自的多个结果。所以这部分代码有效:`
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
);`
但是,当我尝试全部执行输入函数时,当我实际上希望它为上面代码给我的所有结果添加一个新行时,它只添加一行。这是带有插入功能的代码:
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
如有任何建议,我们将不胜感激,在此先致谢。
您不能将多行分配给一个标量变量。但也许您想使用如下所示的 INSERT ... SELECT
?这会将查询的所有结果与该文字一起插入。
INSERT INTO test.wp_usermeta
(umeta_id,
user_id,
meta_key,
meta_value)
SELECT NULL,
user_id,
'_stripe_customer_id',
cusid
FROM test.wp_usermeta wp_usermeta
INNER JOIN test.subs subs
ON wp_usermeta.meta_value = subs.email;
您还应该考虑使用显式连接语法,而不是将字符串文字括在双引号中。这就是 SQL.
中单引号的作用
以下代码匹配来自 2 个表的结果和 returns 来自的多个结果。所以这部分代码有效:`
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
);`
但是,当我尝试全部执行输入函数时,当我实际上希望它为上面代码给我的所有结果添加一个新行时,它只添加一行。这是带有插入功能的代码:
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
如有任何建议,我们将不胜感激,在此先致谢。
您不能将多行分配给一个标量变量。但也许您想使用如下所示的 INSERT ... SELECT
?这会将查询的所有结果与该文字一起插入。
INSERT INTO test.wp_usermeta
(umeta_id,
user_id,
meta_key,
meta_value)
SELECT NULL,
user_id,
'_stripe_customer_id',
cusid
FROM test.wp_usermeta wp_usermeta
INNER JOIN test.subs subs
ON wp_usermeta.meta_value = subs.email;
您还应该考虑使用显式连接语法,而不是将字符串文字括在双引号中。这就是 SQL.
中单引号的作用