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

MySQLスカラーサブクエリによってどのような種類の出力が返されますか? MySQLクエリで使用する際の制限は何ですか?


MySQLスカラーサブクエリは1つの行から正確に1つの列値を返し、単一の列が許可されている場合に使用できます。以下は、スカラーサブクエリが1行以外の値を返す場合です-

ケース1-0行を返す場合 サブクエリが0行を返す場合、スカラーサブクエリ式の値はNULLになります。

ケース2-複数の行を返す場合

サブクエリが複数の行を返す場合、スカラーサブクエリのプロパティにより、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)

これで、次のクエリは1行に対して正確に1つの列値を返します-

mysql> Select Name from Customers WHERE customer_id = (Select Customer_id FROM reservations where id = 3);
+---------+
| Name    |
+---------+
| Yashpal |
+---------+
1 row in set (0.00 sec)

ここで、サブクエリが0行を返す場合、スカラーサブクエリ式の値がNULLであることを意味するとします。次のクエリに表示されます-

mysql> Select Name from Customers WHERE customer_id = (Select Customer_id FROM reservations where id = 10);
Empty set (0.00 sec)

上記の結果セットから、MySQLが空のセット(0行)を返すことがわかります。これは、スカラーサブクエリ式の値がNULLの場合(10に等しいIDがないため)です。

MySQLクエリでスカラーサブクエリを使用する際の制限は、リテラル値のみを許可するステートメントでスカラーサブクエリを使用できることです。たとえば、LIMITにはリテラル整数引数が必要であることがわかっているため、これらの値を提供するためにスカラーサブクエリを使用することはできません。


  1. Java JDBCを使用したMySQLに対する「カウント」クエリの戻りタイプは何ですか?

    カウントの戻りタイプは長いです。 Javaステートメントは次のとおりです rs.next(); long result= rs.getLong("anyAliasName"); まず、サンプルデータベースtest3にいくつかのレコードを含むテーブルを作成します。テーブルを作成するためのクエリは次のとおりです mysql> create table CountDemo    -> (    -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,    ->

  2. MySQLのLIKEを使用して、特定の文字で始まる名前を取得します

    特定の文字で始まる名前を取得するには、LIKEを使用する必要があります。最初にテーブルを作成しましょう: mysql> create table DemoTable (    StudentFirstName varchar(20) ); Query OK, 0 rows affected (1.01 sec) 以下は、挿入コマンドを使用してテーブルにいくつかのレコードを挿入するためのクエリです。 mysql> insert into DemoTable values('John'); Query OK, 1 row affected (0.1