我有一个表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的初学者,所以非常感谢所有人的帮助。
答案 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)+'