选择满足多个AND条件的记录列表

时间:2018-02-19 19:44:38

标签: mysql sql oracle

我有两个表格,字段如下

______________
|Game_Details:|
|_____________|______
|Game_Id | Game_Name|
__________
|WC_Info:|
|________|_____________________________
|S/N | Game_Id | Country_Name| WC_Won|

我正在尝试获取至少在4个国家/地区(印度,英国,法国,意大利)播放的game_name列表,并且所有这些字段的WC_Won字段为0。

以下查询提取错误的详细信息。有人请建议获取它的方法。

Select G.Game_Name
From Game_Details G
Inner Join WC_Info W
    On G.Game_Id=W.Game_Id
Where W.WC_Won=0
Group By Game_Name
Having Count(Country_Name in (India, England,France, Italy))>3

2 个答案:

答案 0 :(得分:1)

您可以使用此选择语句:

{{1}}

答案 1 :(得分:0)

你很近:

Select G.Game_Name
From Game_Details G Inner Join
     WC_Info W
     On G.Game_Id = W.Game_Id 
Where W.WC_Won = 0
Group By Game_Name
Having Count(distinct case when Country_Name in ('India', 'England', 'France', 'Italy')
                           then country_name
             end) = 4;

我发现使用不平等会产生误导。您想要所有四个国家/地区,因此= 4> 3>= 4更有意义。

或者,您可以在聚合之前过滤国家

Select G.Game_Name
From Game_Details G Inner Join
     WC_Info W
     On G.Game_Id = W.Game_Id 
Where W.WC_Won = 0 and
      Country_Name in ('India', 'England', 'France', 'Italy')
Group By Game_Name
Having Count(distinct country_name) = 4;