MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

サブクエリで使用しているときにMySQLEXISTSとINのどちらが優先されますか?


EXISTSは、クエリが結果を返したかどうかを示しますが、INを使用して1つの値を他の値と比較できます。 INはリテラル値を使用します。

−サブクエリの結果が非常に小さい場合は常に、サブクエリでINが優先されます。サブクエリの結果が非常に大きい場合は、EXISTSが使用されます。

INは小さいサブクエリ結果に適した選択肢であるため、INの例を検討しています。

テーブルを作成します。

mysql> create table InSubQueryDemo
   -> (
   -> PNumber int,
   -> PName varchar(100)
   -> );
Query OK, 0 rows affected (0.60 sec)

テーブルにレコードを挿入します。

mysql> insert into InSubQueryDemo values(1,'Laptop');
Query OK, 1 row affected (0.17 sec)

mysql>  insert into InSubQueryDemo values(2,'WirelessKeyboard');
Query OK, 1 row affected (0.21 sec)

mysql>  insert into InSubQueryDemo values(3,'WirelessMouse');
Query OK, 1 row affected (0.12 sec)

すべてのレコードを表示しています。

mysql> select *from InSubQueryDemo;

以下は出力です。

+---------+------------------+
| PNumber | PName            |
+---------+------------------+
|       1 | Laptop           |
|       2 | WirelessKeyboard |
|       3 | WirelessMouse    |
+---------+------------------+
3 rows in set (0.00 sec)

以下はINの構文であり、1より大きい「PNumber」をフェッチするためのサブクエリが含まれています。

mysql> select *from InSubQueryDemo
   -> where PNumber IN (select PNumber from InSubQueryDemo  WHERE PNumber > 1);

これが出力です。

+---------+------------------+
| PNumber | PName            |
+---------+------------------+
|       2 | WirelessKeyboard |
|       3 | WirelessMouse    |
+---------+------------------+
2 rows in set (0.04 sec)

  1. 行を取得する際のMySQLのAND、OR演算子の違いは何ですか?

    AND、ORの違いは、全体的な条件が真になるには、ANDが両方の条件が真でなければならないことを評価することです。 ORは、全体的な条件が真であるためには、1つの条件が真でなければならないと評価します。 テーブルを作成しましょう- mysql> create table demo70 −> ( −> id int not null auto_increment primary key, −> name varchar(20), −> age int −> ); Query OK, 0 rows a

  2. MySQLデータベースの作成と使用

    MySQLがインストールされ、ユーザーがSQLステートメントの入力方法を認識したら、データベースにアクセスできます。データベース内のテーブルからデータを取得するために必要な手順を理解しましょう- サーバーに接続する データベースを作成する テーブルを作成する データをテーブルにロードします テーブルからデータを取得する データベースを作成する前に、環境にすでに存在するデータベースを知ることが重要です。以下のクエリを使用して見つけることができます- クエリ mysql> SHOW DATABASES; 出力 +--------------+ | Data