1
다른 결과를 반환하는 2 개의 SQL 쿼리가 있습니다. 두 쿼리 모두 동일한 조인 작업을 사용하지만 IN 절 내부의 조인 매개 변수에 다른 바인딩을 사용합니다.내부 SQL이 조인 결과에 영향을 미침
처음에는 join 매개 변수를 직접 참조합니다. 두 번째에는 무료 컨텍스트 쿼리를 사용합니다. 다른 결과가 나타나고 그 이유를 알고 싶습니다.
-- this one returns 13 tuples
select c.companyname
from companies as c
join stocklist as s
using (companyid)
where s.price in((select MAX(s.price)),(select MIN(s.price)));
--this one returns two tuples. as it should
select companyname
from companies join stockslist
using (companyid)
where price in(
(select max(price) from stockslist),(select min(price) from stockslist)
);
1 :
귀하의 상위 쿼리는 본질적으로 동일합니다. 전문 용어로는 첫 번째 쿼리에는 * 상관 관계가있는 * 하위 쿼리가 있으며 (두 번째 쿼리에는 외부 쿼리의 현재 레코드와 "상관 관계가 있음"), 두 번째 쿼리에는 * 무관계 * 하위 쿼리가 있습니다 (전혀 참조하지 않습니다 다른 쿼리의 내용으로). – ruakh
+1 나는 그것을 몰랐다. 고마워. :) – MimiEAM