Mysql的查询次数很多

时间:2010-07-19 15:26:38

标签: sql mysql

有一个心理障碍,可以绕过这个查询。

我有以下表格:

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

或类似的,我可以使用类型的复选框列表转移到某个网页。这将显示所有可用的模型以及表中是否存在每个模型

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