写一个查询得到如下所示的输出

Write a query to get output as shown below

一个table名字玩家在table中有一些列&数据如下:

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

这是 table.Write 我要记录的查询 如果团队名称是 "germany" & no_of_penalties=1 那么我想得到 record.If 团队名称是 "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

那么你能帮我解决这个问题吗?

试试这个

select * from player 
  where (team='germany' and no_of_penalties=1) 
  or (team='uk' and no_of_penalties!=2)

这些是互斥的数据,所以应该是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'
        ) );

Select * 来自 Player Where (团队 = 'Germany' 和 No_Of_Penalties = 1) 并不是 (团队 = "UK" AND No_Of_Penalties = 2)

如果我错了,请原谅我,因为我发现你的问题很难理解,但是你把 "If team name is "uk" & no_of_penalties=2 那么我不想得到记录" 的意思您不想要 2 的值,但是您选择的答案将显示值为 2

的答案

试试看

    select * from player 
  where (team='germany' and no_of_penalties=1) 
union all
select * from player 
  where  (team='uk' and no_of_penalties!=2)