这个问题在这里已经有答案了:
根据另一个表的内容在mysql中选择布尔值(2个答案)
两年前关门了。
我需要一些mysql查询的帮助,这让我头痛。
基本上我有两个相关的表格。第一个表叫做“books”,它包含关于一本书的基本信息。然后我有一个名为“user\u books”的表,它与上一个表和另一个表相关(在问题中不相关)。这是books表的外观:
| b_id | b_name | b_description |
---------------------------------------------------
| 1 | Book1 | Description1 |
| 2 | Book2 | Description2 |
“用户图书”表包含以下内容:
| ub_userid | ub_bookid | ub_rating | ub_default |
------------------------------------------------------
| 10 | 1 | 5 | 1 |
user\u books表有两个主键:ub\u userid和ub\u bookid。
现在我需要做一个查询,返回books表中的所有图书,对于每本图书,返回给定用户的评级,如果user\u books表中有该图书的记录,则返回1,如果没有任何图书具有该bookid,则返回0。
给定用户10,我期望的输出是:
| b_id | b_name | b_description | ub_default | active |
----------------------------------------------------------
| 1 | Book1 | Description1 | 1 | 1 |
| 2 | Book2 | Description2 | 0 | 0 |
----------------------------------------------------------
我正在使用MySQL5.7
非常感谢你的帮助。
1条答案
按热度按时间i1icjdpr1#
这不会进行任何聚合,因此如果您有多个
user_books
一个人的记录books
记录,然后books
记录将被复制。但是,它展示了如何针对缺少的行(外部连接)进行连接,并测试该外部连接行是否存在或缺少。下面是一个针对mysql 5.6的sql fiddlehttp://sqlfiddle.com/#!9/b70ff8/4/0型