0

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

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

我根据我在网上找到的东西尝试了以下方法,但虽然逻辑看起来很合理,但它似乎不起作用

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 

提前致谢

马特

4

2 回答 2

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。

于 2012-04-04T15:45:04.243 回答
0

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

insert into Tag_Score
select accountID, t.ID, 0, 0
from tags t
-- optional order by
-- order by t.ID 
于 2012-04-04T15:47:17.163 回答