我只是在步骤id不存在的情况下,尝试从所有用户的表步骤中将行插入表(usersteps)。
INSERT INTO userssteps
(status,user_id,step_id)
SELECT
'0' ,
(SELECT DISTINCT id from users),
(SELECT DISTINCT id from steps)
我在上面的MYSQL上得到以下错误
#1242 - Subquery returns more than 1 row
原因: 一个新用户注册他们应该获得所有步骤,如果我创建一个新步骤,我想在用户步骤中创建它以供当前用户查看。
如果有更聪明的方法可以做到这一点,我很想知道,但我很难过。我也在使用cakePHP,所以如果有一种特殊的cakePHP方式来帮助我,我宁愿这样做。
表格结构
steps:
id
name
users:
id
username
password
userssteps:
id
user_id
step_id
status
答案 0 :(得分:1)
看起来你正在尝试生产笛卡尔积。 http://en.wikipedia.org/wiki/Cartesian_product
如果用户和步骤表之间没有关系,则它们无法连接,只能相乘。
INSERT INTO userssteps
(status,user_id,step_id)
select 0,
users.id,
steps.id
from users
inner join steps
答案 1 :(得分:0)
尝试这种方式:
INSERT INTO userssteps
(status,user_id,step_id)
select 0 as status,
users.id,steps.id
from users
inner join steps
on (users.id=steps.user_id);
这种方式应该有效;)
PS:现在加入是对的。
Saludos。
答案 2 :(得分:0)
subquerys(来自用户的SELECT DISTINCT id)和(来自步骤的SELECT DISTINCT id)将返回所有id。在insert子句中,您只需要一个值(不能超过1个值)。 您可以尝试通过ID
内部连接两个表