mysql - 插入具有未知外键但有关其他列的已知信息的行的最简单方法

标签 mysql insert

所以为了澄清这个问题,我有一个表,我们将其称为“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/

相关文章:

mysql - Tomcat 6 MySQL -> 奇怪的连接错误

php - 插入查询在我的程序中不起作用,但在 mysql 选项卡上运行良好

mysql - 从 2 个 mySQL 数据库到一个

mysql - 是否可以一次插入相同的值(Mysql)?

java - Amazon EC2 意外停止工作

php - HTML 中的多个提交按钮

sql - 自动生成带有虚拟数据的sql插入语句

php - 如何散列进入数据库的密码?

java - SqlServer 转换为 mySql5.5,jpa @GeneratedValue 不起作用

mysql - 社交网络 - 推荐的 friend