저는 mysql을 처음 사용하고 sakila 데이터베이스를 가지고 놀고 있습니다. 누구도 이러한 쿼리가 정확히 동일한 행을 반환하지 않는 이유에 대해 어떤 힌트를 제공 할 수 있습니까? 내가 IN()를 사용하는 경우MYSQL : IN과 OR이 같은 행을 반환하지 않습니다
mysql> use sakila
Database changed
mysql> SELECT first_name,last_name,address.city_id FROM customer
-> JOIN store ON store.store_id=customer.store_id
-> JOIN address ON customer.address_id=address.address_id
-> WHERE store.store_id=1 AND address.city_id=1 OR address.city_id=42
-> OR address.city_id=312 OR address.city_id=459;
+------------+-------------+---------+
| first_name | last_name | city_id |
+------------+-------------+---------+
| JULIE | SANCHEZ | 1 |
| SCOTT | SHELLEY | 42 |
| CLINTON | BUFORD | 42 |
| MATTIE | HOFFMAN | 312 |
| CECIL | VINES | 312 |
| NELSON | CHRISTENSON | 459 |
+------------+-------------+---------+
6 rows in set (0,00 sec)
: 나는의 순서 OR 문을 사용하는 경우
는
mysql> SELECT first_name,last_name,address.city_id FROM customer
-> JOIN store ON store.store_id=customer.store_id
-> JOIN address ON customer.address_id=address.address_id
-> WHERE store.store_id=1 AND address.city_id IN (1,42,312,459);
+------------+-------------+---------+
| first_name | last_name | city_id |
+------------+-------------+---------+
| JULIE | SANCHEZ | 1 |
| SCOTT | SHELLEY | 42 |
| CECIL | VINES | 312 |
| NELSON | CHRISTENSON | 459 |
+------------+-------------+---------+
4 rows in set (0,00 sec)
은 IN이() CITY_ID의 첫 번째 인스턴스를 나열 보인다. 웹상의 모든 곳에서이 두 시나리오는 성능면에서만 차이가 있다고 명시되어 있습니다. 나는 무엇을 놓치고 있습니까?
당신은 괄호가 누락되었습니다. –