假设我有一个规范化的数据库,
Students (RollNo, Name) - e.g. (1, "John")
Books (BookCode, Name) - e.g. (1, "StoryBook"), (2, "Dictionary")
Loans (RollNo, BookCode) - e.g. (1, 2)
现在“约翰”想借“Dictianry”;但是我不能在贷款表中插入(“john”,“Dictionary”), 因为它需要BookID和RollNo。
我的后端FW将我限制为每个请求一个查询。
有没有办法在一个sql语句中执行此操作而不首先查找书籍的ID和插入(使用两个单独的SQL)?
答案 0 :(得分:0)
您可以使用子查询,但这对于插入来说似乎有点复杂。您可以将主键更改为Name
而不是RollNo
和BookCode
,但这是不好的做法。
为了解决这个问题,您可以尝试缓存学生和书籍。看来每个请求只限一个查询似乎很奇怪,也许你应该专注于那个?
答案 1 :(得分:0)
试试这个我觉得它会适用于你的情况
insert into Loans (RollNo, BookCode)
select s.RollNo,b.BookCode from Students s
full join Books b on 0=0
where s.Name='John' and b.Name='Dictionary'