【问题标题】:(SQL) How can I add values into a table based on the IDs of another table?(SQL) 如何根据另一个表的 ID 将值添加到表中?
【发布时间】:2012-04-04 15:34:06
【问题描述】:

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

添加用户后,我想查看我的“Tags”表,并在“Tag_Score”表中为“Tags”表中的每个 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 

提前致谢

马特

【问题讨论】:

  • 如果你能多解释一点用英语你正在尝试做什么,而不是发布损坏的代码(尽管你尝试了一些东西很好),那真的很有帮助.另外,请发布TagsTag_Score 的表定义
  • 我很难理解你的问题,但听起来你需要看看INSERT... SELECT
  • 对不起,我度过了漫长的一天,请重新阅读此内容,您说得对,我的英语很糟糕哈哈!虽然这个 INSERT...SELECT 东西似乎是正确的方法,但我以前从未听说过它(这对这一切有点新)。非常感谢大家

标签: mysql sql variables insert declare


【解决方案1】:

你还没有发布任何表格布局,所以我在这里在黑暗中拍摄,但这种查询应该适合你:

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

请注意删除所有不必要的反引号(即 `),它们仅在您有一个保留字的架构名称时才需要,看看它现在的可读性如何!

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

【讨论】:

  • 我认为这可能是 SELECT $accountID, T_ID, 0, 0,因为 A_ID 不在 Tags 表中。
  • @JoachimIsaksson 你怎么知道?你可能是对的,但谁会知道 - 他没有发布架构。
  • 事实证明他是对的,但如果我需要问另一个问题,我绝对不会忘记将我的表格结构放入其中。非常感谢波西米亚人
  • 不客气!欢迎来到stackoverflow——希望你能经常回来回答和提问:)
  • 我敢肯定,当我在所有这些方面都做得更好时,我会很乐意帮助最新一批的年轻人,哈哈 =D
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多