我是数据库开发的新手,我确信我当前的问题很普遍。不幸的是我还找不到解决方案——主要是因为我不确定如何正确命名它;)所以如果已经有可用的解决方案或者有更好的描述方式,请告诉我,我会重命名这个帖子。
我的问题是我有一个具有 M:N 关系的数据库,我正在寻找一种方法来检查记录是否已经存在。
例子:
书籍可以有多个出版地点和作者。为避免重复,应在添加新书之前检查数据库。如果只有一位作者和出版地,查询将只返回一条记录:
但是,如果有两个作者,则将返回同一本书的 2 行。更复杂的是,假设有两本书的书名、出版年份和页数相同,但作者不同,这将被返回:
这就是我的问题开始的地方:我想检查 book_id 为“2”的记录是否已经存在(显然不知道 book_id),如果它存在,它的 book_id 是什么。在这个例子中,实现这一点的唯一方法是检查两个作者的名字(或 ID 以使其更短一些)是否与其中一本在标题、年份和页数中具有 destinct 值的书相关联——我没有知道如何做到这一点(最好是在 SQL 中)。
所以提前感谢您的帮助:)
好吧,经过一些实验和仔细阅读多个 SQL 教程,我发现这是一个很好的解决方案:
这应该准确地返回所需的书,而不是其他任何东西。显然,硬编码值可以替换为来自前端表单或其他东西的值,以使其更加灵活......欢迎任何优化此解决方案的建议。