如何使用另一个表的主键将值插入现有表记录?

时间:2017-08-13 11:45:59

标签: sql delphi-2010

我有一个表USERSINFO,其中包含以下列:

Email (primary key)
Name

我有另一张表USERFAVOURTIES,其中包含以下列:

UserID (primary Key)
Email (foreign Key)
CrushMuseum

我希望CrushMuseum列的值更改为“F”。

这必须发生在当前用户的电子邮件中,该电子邮件将另存为“sEmail”

这是我的代码:

qryGoldReefCity.SQL.Clear;
qryGoldReefCity.SQL.Add('INSERT into UserFavourites(Email,CrushMuseum) values((SELECT Email from UsersInfo where Email ='+QuotedStr(sEmail)+', F)');
qryGoldReefCity.ExecSQL;

我收到语法错误。

我是Delphi的初学者,所以非常感谢所有人的帮助。

2 个答案:

答案 0 :(得分:1)

试试这个语法:

INSERT INTO UserFavourites (UserID, Email, CrushMuseum)
SELECT 12345, Email, 'F'
FROM UserInfo
WHERE Email = '+QuotedStr(sEmail)+'

通常在插入硬编码常量时使用VALUES使用的语法。在您的情况下,由于您要从查询中插入值,SELECT子句将扮演VALUES所具有的角色。

此答案的更新包括为userID插入一个主键列的值,因此不能为NULL

答案 1 :(得分:0)

正确的SQL语法是insert . . . select。像这样:

INSERT into UserFavourites(Email, CrushMuseum) 
    SELECT Email, 'F'
    FROM UsersInfo 
    WHERE Email = '+QuotedStr(sEmail)+'