我正在制作一个自定义白名单,其中我的主表是book_list,其中包含id-主键以及其他不重要的列。另一个表是白名单,其中包含book_list的外键和另一个键user_id。
book_list表
-------------- | id | --------------- | 10 | | 11 | | 12 | | 13 | ---------------
白名单表
--------------------------- | book_list_id | user_id | ---------------------------- | 10 | 1 | | 10 | 2 | ----------------------------
因此,当user_id 1正在浏览时,他/她应该看到所有书籍(10、11、12、13),但如果ID为5的用户看起来他应该只看到book_list ID(11、12、13)
我的查询是这样的,但如果每个book_id仅提供一个ID,它就可以工作。
SELECT * FROM book_list bl LEFT JOIN whitelist w ON bl.id = w.book_list_id AND w.user_id <> 1 WHERE w.book_list_id IS NULL
注意:我总是从会话中获得user_id,这是为什么要对其进行硬编码的原因。