【发布时间】:2018-06-06 23:50:30
【问题描述】:
我有一个表 tblRater(包含所有可以对主题进行评分的用户),其样本数据如下:
RaterID | Name |
=================
rater_1 |Katty |
rater_2 |Batty |
rater_3 |Ratty |
rater_4 |Shatty |
rater_5 |Patty |
还有另外一张表 tblAuthorizedRater(其中包含关于哪个评分者被分配给哪个主题评分的数据),其样本数据如下:
TopicID | RaterID |
===================
topic_1 | rater_1 |
topic_1 | rater_2 |
topic_1 | rater_3 |
topic_2 | rater_2 |
topic_2 | rater_3 |
topic_3 | rater_1 |
topic_3 | rater_2 |
topic_6 | rater_1 |
因此,当我查找允许对 topic_1 进行评分的评分者列表时,我希望得到以下数据:
RaterID | Authorized|
=====================
rater_1 | 1 |
rater_2 | 1 |
rater_3 | 1 |
rater_4 | 0 |
rater_5 | 0 |
上表基本上是来自 tblRater 的所有评分者列表和来自 tblAuthorizedRater 的 topic_1 的授权评分者列表。
我尝试使用左侧的 tblRater 和右侧的 tblAuthorizedRater 以及 if 条件进行左连接。但是,我得到的结果重复了 RaterID,如果我对它进行分组,我没有得到预期的结果。
仅供参考,这是我目前正在尝试的查询:
select
tr.RaterID,
IF(tar.TopicID = 'topic_1', 1, 0) as Authorized
from tblRater as tr
left join tblAuthorizedRater as tar
on tr.RaterID = tar.RaterID;
我也尝试查看 subselect、union,但没有任何帮助。
【问题讨论】:
-
@Strawberry 他错过了什么?他提供了示例输入、期望的输出以及他尝试过的查询。
-
@Barmar 我也邀请你看看上面的内容
-
@Strawberry 我想我触及了共享 URL 中提到的 MCVE 的所有要点,你能更具体一点吗?
-
接受的答案受到高度评价。因此,我很满意它是不言自明的。
标签: mysql database select join rdbms