所以为了澄清这个问题,我有一个表,我们将其称为“tAuthor”,另一个表称为“tBook”。这些表具有以下列。
作者
- id - INT (PK)
- fname - VARCHAR(50)
- lname - VARCHAR(50)
书籍
- id - INT (PK)
- authorid - INT (PK)
- 名称 - VARCHAR(50)
如果我有作者的名字和姓氏,并想为他们在 tBook 中插入一本新书,有没有一种简单的方法可以让插入语句自动填写 authorid WHERE fname = "Known"and lname = "Known"?
我想我总是可以有两个语句,一个返回 id WHERE fname="Known"和 lname="Known"的 select 语句,然后使用返回的 id 运行插入语句。我只是好奇是否还有其他方法?
最佳答案
INSERT INTO tBook (name, authorid)
VALUES(SELECT 'NewBook', id
FROM tAuthor
WHERE tAuthor.fname = 'FirstName'
and tAuthor.lname = 'LastName')
我不建议为此使用作者姓名,因为可能会有重复。但是,此语句将执行您需要的插入。您基本上从需要 ID 的表中进行子选择,并将其余信息作为硬编码值而不是要检索的值填写。如果您需要更新共享相同元素的更大记录集,这也是进行多次更新的好方法。
关于mysql - 插入具有未知外键但有关其他列的已知信息的行的最简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5793248/