2016-12-08 2 views
1

私はSQL Serverの初心者ですが、SQL ServerでXOR操作を実行しようとしていますが、実行できません。SQL ServerのXOR

面積が大きいか人口が多い国を表示する必要がありますが、名前と人口と面積を表示することはできません。私が間違っていないのは、基本的にはXOR演算です。

300万平方キロ以上の面積を持つ国、または2億5,000万人以上の人口を持つ国は大きいです。

私は親切にお勧めこの

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に選択してください。

+0

http://stackoverflow.com/a/14731578/4832634 [T-SQL XOR演算子](の –

+0

可能な重複http://stackoverflow.com/questions/5411619/t-sql-xor-operator) –

+0

@ shA.tいいえ、そうは思いません。 – Ashish

答えて

2

あなたはこのようなXORを実装することができます

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

このクエリには問題があります。正確に300万km^2の人口、250万人の人口を無視します。 –

+0

@TimBiegeleisen、私は単純に 'OP's'の例のロジックを編集して' XOR'ロジックを得ました。これは元のポスト( 'area> 30000000 | population> 25000000')のように領域と人口の比較を残した理由です。 –

+0

@Radu Gheorghiu、ありがとう、提案は必要なテーブルを生成しません。 – Ashish

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万km^2に等しいか、人口が250万にちょうど等しい状況を避けるためです。 <を使用すると、この場合のデータが削除されます。

+0

私はあなたの '<='編集に同意しますが、質問には「** 300万平方キロ以上の人数、**人口が2億5000万人以上」と書かれていますが、非包括的な比較。 –

+0

また、OPのポストには非包含的な比較演算子があります。 ( 'area> 30000000 | population> 25000000') –