编写查询以获取输出,如下所示

时间:2017-01-06 05:28:57

标签: sql oracle plsql plsqldeveloper

表格名称 播放器 包含一些列&表中的数据如下:

**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

那么请你解决我的问题吗?

4 个答案:

答案 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)