2009-03-13 9 views

答えて

1

私は...読んで理解するのが最も簡単に、以下見つける

SELECT foo.name 
FROM foo 
WHERE NOT EXISTS (SELECT 'x' 
        FROM bar 
        WHERE bar.fooid = foo.id 
        AND bar.value > 0) 
1
SELECT name FROM FOO WHERE id NOT IN(
    SELECT fooId FROM Bar GROUP BY fooId HAVING MAX(Value) > 0) 
2
SELECT Name 
FROM Bar 
INNER JOIN Foo ON Foo.Id = Bar.fooId 
GROUP BY fooId, name 
HAVING SUM(Value) = 0 

このクエリとzodeusによって掲示1を実行するための時間と同じ長さほどかかるが、しかし、この1つは参照されない任意のFooのレコードが含まれません。例えば

バーテーブルによって。たとえば、レコードFoo(4、d)も持っていれば、このクエリは 'b'を返します。ここで、zodeusのクエリは 'b'と 'd'を返します。

0
select Foo.name 
from Foo 
where Foo.id not in 
(select Bar.fooid from Bar 
where value > 0)