SQL Server中的XOR

时间:2016-12-08 07:45:22

标签: sql-server

我是SQL Server的初学者,我正在尝试在SQL Server中执行XOR操作,但我无法做到。

我必须按人口显示大面积或大的国家,但不要同时显示两者和显示名称,人口和面积。基本上,如果我没有错的话,它是一个XOR操作。

如果一个国家面积超过300万平方公里或者人口超过2.5亿,那么这个国家就很大。

我试过这个

SELECT name, population, area
FROM world
WHERE (area > 30000000 | population > 25000000) &
      (area < 30000000 & population < 25000000)

请建议。

注意:我在http://sqlzoo.net/wiki/SELECT_from_WORLD_Tutorial上尝试此操作,Q.No-8,请选择SQL Engine到SQLSERVER。

11 个答案:

答案 0 :(得分:3)

SELECT name,
       population,
       area
FROM world
WHERE (area > 3000000 AND population <= 25000000) OR   -- big area, small population
      (area <= 3000000 AND population > 25000000)      -- small area, big population

请注意,我使用<=来表示“较小的”条件。这是为了避免面积等于300万平方公里或人口恰好等于250万的情况。在这种情况下,使用<将消除数据。

答案 1 :(得分:2)

您可以像这样实施XOR:

SELECT name
    , population
    , area
FROM world
WHERE (area > 3000000 AND population < 250000000)
    OR (area < 3000000 AND population > 250000000)

答案 2 :(得分:2)

SELECT name,
   population,
   area
FROM world
WHERE (area > 3000000 XOR population > 250000000) 

问题希望您这样回答。这是对这个问题使用“ XOR”的正确且简短的方法。

答案 3 :(得分:1)

SELECT name, population, area
FROM world
WHERE (area > 3000000 OR population > 250000000) AND NOT 
      (area > 3000000 AND population > 250000000)

通过维恩图想象一下,其中a =面积> 3000000,b =人口> 250000000

XOR b等于(a联合b)减(a交集b)

答案 4 :(得分:0)

SELECT name,
       population,
       area
  FROM world
 WHERE (area > 300000) <> (population > 25000000)

虽然可读性较差,但更简短。 通常,<>!=可以很好地替代逻辑XOR

答案 5 :(得分:0)

Select name, population, area
from world
where (population >= 250000000 AND NOT area >= 3000000) OR 
      (area >= 3000000 AND NOT population >= 250000000);

这肯定会给您您想要的答案。

答案 6 :(得分:0)

正确答案

从世界中选择姓名,人口,地区 其中NOT(面积> 3000000,人口> 250000000)和 (面积> 3000000或人口> 2.5亿);

答案 7 :(得分:0)

SELECT NAME,
       population,
       area
FROM   world
WHERE  area > 3000000
        OR population > 250000000
EXCEPT
SELECT NAME,
       population,
       area
FROM   world
WHERE  area > 3000000
       AND population > 250000000

以上是集合论中的实际表示。

答案 8 :(得分:0)

查询将是这样的:

SELECT name, population, area 
FROM world
WHERE (area > 3000000 AND  population < 250000000) OR
      (area < 3000000 AND  population > 250000000);

答案 9 :(得分:-1)

select name, population, area from world 
    where (area >= 3000000 and population <= 250000000) OR 
        (area <= 3000000 and population >= 250000000);

这很好。

答案 10 :(得分:-2)

选择名称,人口,地区 来自世界 哪里(区域> 3000000,人口<250000000)或 (面积<3000000 AND人口> 250000000)