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/GROUP BY 절 사이의 공통 하위 표현식을 제거하는 쿼리입니다.

사례 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초가 걸립니다(3초에 40, 3초에 60, 3초에 60).

사례 2 − 쿼리는 다음과 같습니다. −

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

출력은 다음과 같습니다 -

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