(SQL)如何根据另一个表的ID将值添加到表中?

时间:2012-04-04 15:34:06

标签: mysql sql variables insert declare

每次将新用户添加到系统中时,我都需要能够将一组值添加到表中。

添加用户后,我想查看我的“标签”表,并在“标签”表中的每个ID的“Tag_Score”表中插入一个新条目。

我根据我在网上找到的东西尝试了以下内容但是虽然逻辑看起来很合理,但似乎没有起作用

DECLARE @LoopVar INTEGER
SET @LoopVar = ( SELECT MIN(Tag_Score.T_ID) 
FROM Tags ) WHILE @LoopVar IS NOT NULL 
BEGIN 
INSERT INTO  `a3360218_DD`.`Tag_Score` (
`A_ID` ,
`T_ID` ,
`Score` ,
`Visits`
)
VALUES (
'" . $accountID . "', @LoopVar ,  '0',  '0'
)
SET @LoopVar = ( SELECT MIN(Tag_Score.T_ID) 
FROM TheTable
WHERE @LoopVar < T_ID ) 
END

给出的错误是:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHILE @LoopVar IS NOT NULL 
BEGIN 
INSERT INTO  `a3360218_DD`.`Tag_Score` (

' at line 2 

提前致谢

马特

2 个答案:

答案 0 :(得分:3)

你还没有发布任何表格布局,所以我在黑暗中拍摄,但这种查询对你有用:

INSERT INTO Tag_Score (A_ID, T_ID, Score, Visits)
SELECT A_ID, T_ID, 0,  0
FROM Tags
WHERE A_ID = $accountID;

请注意删除所有那些不必要的反向标记(即`),只有当您的模式名称是保留字时才需要,并且看看它现在的可读性!

保持简单 - 如果可以,请避免使用复杂的SQL。

答案 1 :(得分:0)

我想你可能想要CROSS JOIN,或者只是来自...的常规插入

insert into Tag_Score
select accountID, t.ID, 0, 0
from tags t
-- optional order by
-- order by t.ID