表格名称 播放器 包含一些列&表中的数据如下:
**PID**|**PNAME**|**CITY**|**TEAM**|**SALARY**|**NO_OF_PENALTIES**
1001 ozil istanbul germany 500000 1
1002 messi madrid arsenal 500000 2
1003 ronaldo manc uk 600000 1
1004 puyol sussex germany 400000 3
1005 fabregas manchester uk 450000 2
1006 costa ankara turkey 400000 3
1007 beckham london uk 600000 2
这是表。如果团队名称是"德国"写一个我想要记录的查询。 &安培; no_of_penalties = 1然后我想得到记录。如果团队名称是" uk" &安培; no_of_penalties = 2然后我不想获得记录。 根据上述记录的平均值,根据查询我想获得pid = 1001&的记录。 PID = 1003。 但是当我编写如下所示的查询时:
select * from player where (team='germany' and no_of_penalties=1) or not (team='uk' and no_of_penalties=2) and team in ('germany','uk');
然后执行上面的查询后,输出看起来像pid = 1001,1003,1004,如下所示
**PID**|**PNAME**|**CITY**|**TEAM**|**SALARY**|**NO_OF_PENALTIES**
1001 ozil istanbul germany 500000 1
1003 ronaldo manc uk 600000 1
1004 puyol sussex germany 400000 3
那么请你解决我的问题吗?
答案 0 :(得分:1)
试试这个
select * from player
where (team='germany' and no_of_penalties=1)
or (team='uk' and no_of_penalties!=2)
答案 1 :(得分:0)
这些是互斥的数据,所以它应该是AND(不是OR)。试试这个
SELECT *
FROM player
WHERE (
team = 'germany'
AND no_of_penalties = 1
)
AND NOT (
team = 'uk'
AND no_of_penalties = 2
)
AND team IN (
'germany'
,'uk'
) );
答案 2 :(得分:0)
选择*来自玩家所在位置 (Team ='Germany'和No_Of_Penalties = 1) 并不是 (Team =“UK”AND No_Of_Penalties = 2)
请原谅我,如果我错了,因为我发现你的问题很难理解,但你说“如果团队名称是”英国“& no_of_penalties = 2那么我不想得到记录”意味着你不想要值2但是您选择的答案将显示值为2
的值答案 3 :(得分:0)
试试
select * from player
where (team='germany' and no_of_penalties=1)
union all
select * from player
where (team='uk' and no_of_penalties!=2)