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

MySQLはSELECT句とHAVING/GROUP BY句の間の共通部分式を排除しますか?それをテストする方法は?


テストするには、sleep()関数を使用します。

ケース1

構文は次のとおりです-

SELECT yourColumnName+sleep(yourIntegerValue)
FROM yourTableName
GROUP BY yourColumnName+sleep(yourIntegerValue);;

ケース2 −次のような別の構文を使用できます-

SELECT yourColumnName+sleep(yourIntegerValue) As anyAliasName
FROM yourTableName
GROUP BY yourAliasName;

上記の構文を理解するために、テーブルを作成しましょう。テーブルを作成するためのクエリは次のとおりです-

mysql> create table sleepDemo
   -> (
   -> value int
   -> );
Query OK, 0 rows affected (1.25 sec)

挿入コマンドを使用して、テーブルにいくつかのレコードを挿入します。クエリは次のとおりです-

mysql> insert into sleepDemo values(40);
Query OK, 1 row affected (0.18 sec)
mysql> insert into sleepDemo values(60);
Query OK, 1 row affected (0.19 sec)
mysql> insert into sleepDemo values(60);
Query OK, 1 row affected (0.10 sec)

selectステートメントを使用して、テーブルのすべてのレコードを表示します。クエリは次のとおりです-

mysql> select *from sleepDemo;

これが出力です-

+-------+
| value |
+-------+
| 40    |
| 60    |
| 60    |
+-------+
3 rows in set (0.00 sec)

これは、SELECT句とHAVING /GROUPBY句の間の一般的な部分式を削除するためのクエリです。

ケース1 −クエリは次のとおりです-

mysql> SELECT value+sleep(3)
   -> FROM sleepDemo
   -> GROUP BY value+sleep(3);

出力は次のとおりです-

+----------------+
| value+sleep(3) |
+----------------+
| 40             |
| 60             |
+----------------+
2 rows in set (9.00 sec)

上記のクエリは、値ごとに9秒かかります(40は3秒、60は3秒、60は3秒)。

ケース2 −クエリは次のとおりです-

mysql> SELECT value+sleep(3) As v
   -> FROM sleepDemo
   -> GROUP BY v;

出力は次のとおりです-

+------+
| v    |
+------+
| 40   |
| 60   |
+------+
2 rows in set (9.00 sec)

  1. MySQLで条件付きのクエリを注文して選択する方法は?

    以下は構文です- select * from yourTableName order by yourColumnName=0,yourColumnName; まずテーブルを作成しましょう- mysql> create table DemoTable1348    -> (    -> Amount int    -> ); Query OK, 0 rows affected (0.80 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into

  2. 単一のクエリでのMySQLUNIONSELECTおよびIN句

    まずテーブルを作成しましょう- mysql> create table DemoTable1    -> (    -> StudentId int,    -> StudentName varchar(20)    -> ); Query OK, 0 rows affected (1.24 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTable1 values(210,'Adam'