我的 MySQL 数据库中有两个表,一个是数据库中所有书籍的库,另一个包含与用户图书馆中的书籍相对应的各个行。
例如:
图书馆表
`id` `title`...
===== ===========
1 Moby Dick
2 Harry Potter
收集表
`id` `user` `book`
===== ====== =======
1 1 2
2 2 2
3 1 1
我想要做的是运行一个查询,该查询将显示所有不在用户收藏中的书籍。我可以运行此查询来显示不在任何用户收藏中的所有书籍:
SELECT *
FROM `library`
LEFT OUTER JOIN `collection` ON `library`.`id` = `collection`.`book`
WHERE `collection`.`book` IS NULL
据我所知,这很好用。在 PHPMyAdmin 中运行它会导致所有不在收藏表中的书籍。
但是,如何将其限制为特定用户?例如,对于上面的虚拟数据,如果用户运行查询,我希望得到第 1 本书,如果用户2
运行查询,我希望没有书籍1
。
仅添加 aAND user=[id]
是行不通的,而且由于我对JOIN
语句的了解极为有限,我真的一无所获。
此外,返回的结果的 ID(显示的查询,它不做我想要的但确实起作用)是 0 - 我如何确保返回的 ID 是library.id
?