私はすでに次の問題に対する実用的な解決策を持っていますが、それがばかげているか非効率的ではないかと心配しています。
列のある表Thing
と列の(id, attributes...)
ある表があります。問題は、対応する行が 1 つだけ存在する場所から選択することです。ThingVersion
(id, thing_id, version_attributes...)
Thing
ThingVersion
現時点では、次のようなものがあります
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
それは正しい結果を与えるようであり、強調された非教祖としては自明のように思えますが、- 3 つの選択?!?! -- もっと良い方法があるに違いないと感じずにはいられません。
ある?