EXISTS는 쿼리가 결과를 반환했는지 여부를 알려주고 IN은 한 값을 다른 값과 비교하는 데 사용할 수 있습니다. 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)
다음은 1보다 큰 "PNumber"를 가져오는 하위 쿼리를 포함하는 IN의 구문입니다.
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)