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

How to insert a value into an existing table record using another table's primary key?

我有一个 table USERSINFO 包含以下列:

Email (primary key)
Name

我有另一个 table 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 的初学者,非常感谢大家的帮助。

试试这个语法:

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

您在 VALUES 中使用的语法通常在插入硬编码常量时使用。在您的情况下,由于您想从查询中插入值,因此 SELECT 子句扮演 VALUES 否则会扮演的角色。

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

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

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