私はすでに以下の問題の解決策を持っていますが、それは愚かで非効率です。SQL:select-where-subquery-returns-oneクエリを改善してください
列(id, attributes...)
とも問題は正確に一つの対応ThingVersion
行が存在Thing
から選択することである(id, thing_id, version_attributes...)
列を持つThingVersion
テーブルとThing
テーブルがあります。
私は
SELECT Thing.id AS id, Foo.whatever
FROM Thing JOIN Foo ON Thing.id=Foo.thing_id
WHERE Thing.id IN (
SELECT thing_id FROM ThingVersion TV
WHERE 1 = (
SELECT COUNT(*)
FROM ThingVersion TV2
WHERE TV2.thing_id = TV.thing_id)
)
ORDER BY Foo.whatever
のようなものを持っている現時点では正しい結果を与えているようだ、と強調非第一人者として、それは自明ようだが、 - 選択?!?! - 私は助けることはできませんが、より良い方法が必要であると感じています。
はありますか?
あなたのサブクエリでHAVING
句を使用することができます
+1ジョインはほとんど確実に 'GROUP BY ... HAVING'ソリューションを実行します。 – GarethD