異なる結果を返す 2 つの SQL クエリがあります。どちらのクエリも同じ結合操作を使用しますが、IN 句内の結合パラメーターへのバインドが異なります。
最初のものでは、結合パラメーターを直接参照します。2 番目は、フリー コンテキスト クエリを使用します。異なる結果が得られているので、その理由を理解したいと思います。
-- 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)
);