내가 아는 바에 따르면 EXISTS는 하위 쿼리에 최소한 하나의 행이 포함되어 있으면 true를 반환하고, NOT EXIST는 하위 쿼리가 아무 것도 반환하지 않으면 true를 반환합니다. 주어진 하위 쿼리에 대해 두 중 하나가 true를 반환해야합니다. 맞습니까? 예 : 1) 하나 이상의 도시에있는 상점의 종류를 반환합니다.SQL에 NOT EXISTS를 사용하는 경우는?
SELECT DISTINCT store_type FROM stores
WHERE EXISTS
(SELECT *
FROM cities_stores
WHERE cities_stores.store_type = stores.store_type);
2) 어떤 도시에 어떤 상점이 있는지에 관해서는 어떻게 되나요?
SELECT DISTINCT store_type FROM stores
WHERE NOT EXISTS
(SELECT *
FROM cities_stores
WHERE cities_stores.store_type = stores.store_type);
그러면 어떻게 동일한 하위 쿼리가 두 쿼리에 대한 결과를 제공 할 수 있습니까? 하나는 EXIST를 사용하고 다른 하나는 존재하지 않는다.
나는 또한 방법이 여기에 도움이 EXISTS되지 않습니다 http://dev.mysql.com/doc/refman/5.1/en/exists-and-not-exists-subqueries.html에서 예제를했다? 이건 일종의 거래 아닌가요? 3) 모든 도시에 어떤 상점이 있는지를 반환합니다.
SELECT DISTINCT store_type FROM stores s1
WHERE NOT EXISTS (
SELECT * FROM cities
WHERE NOT EXISTS (
SELECT * FROM cities_stores
WHERE cities_stores.city = cities.city
AND cities_stores.store_type = stores.store_type));
일부'stores' 행은'cities_stores'에서 일치하는 행을 가지고 있기 때문에 다른 행은 없습니까? – wildplasser
'SELECT DISTINCT store_type' 대신'SELECT *'를 사용하면'EXISTS '와'EXITTS '가하는 일에 대해 더 잘 느끼게 될 것입니다. –
'어떻게 같은 하위 쿼리가 두 쿼리에 대한 결과를 출력 할 수 있습니까? '결과가 같아 보이지 않으므로 양쪽 모두에 출력됩니다. 동일하지 않습니다. – DrCopyPaste