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

行を返さないサブクエリでEXISTS演算子を使用した場合、MySQLはどのように評価しますか?


EXIST演算子で使用されるサブクエリが行を返さない場合、式EXISTはFALSEを返し、MySQLは空のセットを出力として返します。表「顧客」からの次のデータを使用した簡単な例を使用して理解できます-

mysql> Select * from Customers;
+-------------+----------+
| Customer_Id | Name     |
+-------------+----------+
|           1 | Rahul    |
|           2 | Yashpal  |
|           3 | Gaurav   |
|           4 | Virender |
+-------------+----------+
4 rows in set (0.00 sec)

mysql> Select * from Reservations;
+------+-------------+------------+
| ID   | Customer_id | Day        |
+------+-------------+------------+
|    1 |           1 | 2017-12-30 |
|    2 |           2 | 2017-12-28 |
|    3 |           2 | 2017-12-29 |
|    4 |           1 | 2017-12-25 |
|    5 |           3 | 2017-12-26 |
+------+-------------+------------+
5 rows in set (0.00 sec)

以下のMySQLクエリには、行を返さないEXIST演算子を含むサブクエリがあります。この場合、EXIST式はFALSEを返すため、結果セットは空のセットになります。

mysql> Select Name from Customers WHERE EXISTS (SELECT * FROM Reservations WHERE customer_id = 4);
Empty set (0.00 sec)

  1. MySQLの行が一意であることを確認するにはどうすればよいですか?

    MySQLの行が一意であることを確認するには、UNIQUE制約を使用する必要があります。まずテーブルを作成しましょう- mysql> create table DemoTable1580    -> (    -> id int,    -> Name varchar(20),    -> Age int    -> ); Query OK, 0 rows affected (0.73 sec) これは、MySQL行が一意であることを確認するための一意の制約

  2. MySQLでCURDATEでCONTAINS()を使用するにはどうすればよいですか?

    このために、CONCAT()をCURDATE()とともに使用できます。MySQLにはCONTAINS()という名前の関数はありません。 まず、現在の日付を取得しましょう。現在の日付は次のとおりです- mysql> select curdate(); これにより、次の出力が生成されます- +------------+ | curdate()  | +------------+ | 2019-11-28 | +------------+ 1 row in set (0.00 sec) テーブルを作成します- mysql> create table DemoTable18