有一个心理障碍,可以绕过这个查询。
我有以下表格:
review_list :拥有大部分数据,但在这种情况下唯一重要的是review_id,我目前感兴趣的记录的ID(int)
variant_list :model(varchar),enabled(bool)
variant_review :model(varchar),id(int)
variant_review是一个多对多的表,将review_list中的review_id链接到variant_list审核中的模型并包含(例如):
..
test1,22
test2,22
test4,22
test1,23
test2,23... etc
variant_list是所有可能模型的列表,以及它们是否已启用并包含(例如):
test1,TRUE
test2,TRUE
test3,TRUE
test4,TRUE
我在mysql中所追求的是一个查询,当给出review_id(即22)时,将返回一个结果集,该结果集将列出variant_review.model中的每个值,以及它是否存在于给定的review_id,例如:
test1,1
test2,1
test3,0
test4,1
或类似的,我可以使用类型的复选框列表转移到某个网页。这将显示所有可用的模型以及表中是否存在每个模型
答案 0 :(得分:2)
给出关于列名的更多信息:
Select variant_list.model
, Case When variant_review.model Is Not Null Then 1 Else 0 End As HasReview
From variant_list
Left join variant_review
On variant_review.model = variant_list.model
And variant_review.review_id = 22
为了完整起见,如果您可以在variant_review
表中使用相同型号和review_id的多行,那么您需要采用不同的方式:
Select variant_list.model
, Case
When Exists (
Select 1
From variant_review As VR
Where VR.model = variant_list.model
And VR.review_id = 22
) Then 1
Else 0
End
From variant_list