論理条件
論理条件は、2 つの条件の結果を結合して 1 つの結果を作成します。論理条件はすべて、ブール型の戻り値を返す 2 項演算子です。
構文
expression { AND | OR } expression NOT expression
論理条件では 3 値ブール論理を使用します。この場合、Null 値は unknown 関係を表現します。次の表で論理条件の結果について説明します。ここで、E1
と E2
は式を表します。
E1 | E2 | E1 AND E2 | E1 OR E2 | NOT E2 |
---|---|---|---|---|
TRUE | TRUE | TRUE | TRUE | FALSE |
TRUE | FALSE | FALSE | TRUE | TRUE |
TRUE | UNKNOWN | UNKNOWN | TRUE | UNKNOWN |
FALSE | TRUE | FALSE | TRUE | |
FALSE | FALSE | FALSE | FALSE | |
FALSE | UNKNOWN | FALSE | UNKNOWN | |
UNKNOWN | TRUE | UNKNOWN | TRUE | |
UNKNOWN | FALSE | FALSE | UNKNOWN | |
UNKNOWN | UNKNOWN | UNKNOWN | UNKNOWN |
NOT 演算子は AND 演算子より先に評価され、AND 演算子は OR 演算子より先に評価されます。括弧が使用されている場合、評価のデフォルトの順序より優先されます。
例
次の例では、USERS テーブルから、ラスベガスもスポーツも好きであるユーザーの USERID および USERNAME を返します。
select userid, username from users where likevegas = 1 and likesports = 1 order by userid; userid | username --------+---------- 1 | JSG99FHE 67 | TWU10MZT 87 | DUF19VXU 92 | HYP36WEQ 109 | FPL38HZK 120 | DMJ24GUZ 123 | QZR22XGQ 130 | ZQC82ALK 133 | LBN45WCH 144 | UCX04JKN 165 | TEY68OEB 169 | AYQ83HGO 184 | TVX65AZX ... (2128 rows)
次の例では、USERS テーブルから、ラスベガスが好き、スポーツが好き、または両方が好きのいずれかに該当するユーザーの USERID と USERNAME を返します。このクエリでは、前の例の出力と、ラスベガスのみ好き、またはスポーツのみ好きなユーザーとをすべて返します。
select userid, username from users where likevegas = 1 or likesports = 1 order by userid; userid | username --------+---------- 1 | JSG99FHE 2 | PGL08LJI 3 | IFT66TXU 5 | AEB55QTM 6 | NDQ15VBM 9 | MSD36KVR 10 | WKW41AIW 13 | QTF33MCG 15 | OWU78MTR 16 | ZMG93CDD 22 | RHT62AGI 27 | KOY02CVE 29 | HUH27PKK ... (18968 rows)
次のクエリでは、OR
条件を囲む括弧を使用して、マクベスが上演されたニューヨークあるいはカリフォルニアの劇場を探します。
select distinct venuename, venuecity from venue join event on venue.venueid=event.venueid where (venuestate = 'NY' or venuestate = 'CA') and eventname='Macbeth' order by 2,1; venuename | venuecity ----------------------------------------+--------------- Geffen Playhouse | Los Angeles Greek Theatre | Los Angeles Royce Hall | Los Angeles American Airlines Theatre | New York City August Wilson Theatre | New York City Belasco Theatre | New York City Bernard B. Jacobs Theatre | New York City ...
この例の括弧を削除すると、クエリの論理および結果が変更されます。
次の例では、NOT
演算子を使用します。
select * from category where not catid=1 order by 1; catid | catgroup | catname | catdesc -------+----------+-----------+-------------------------------------------- 2 | Sports | NHL | National Hockey League 3 | Sports | NFL | National Football League 4 | Sports | NBA | National Basketball Association 5 | Sports | MLS | Major League Soccer ...
次の例では、NOT
条件の後に AND
条件を使用しています。
select * from category where (not catid=1) and catgroup='Sports' order by catid; catid | catgroup | catname | catdesc -------+----------+---------+--------------------------------- 2 | Sports | NHL | National Hockey League 3 | Sports | NFL | National Football League 4 | Sports | NBA | National Basketball Association 5 | Sports | MLS | Major League Soccer (4 rows)