如何使用另一个 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)+'
我有一个 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)+'