对于以下问题,我已经有了一个可行的解决方案,但我担心它很愚蠢或效率低下。
有一个Thing
带有列的表(id, attributes...)
,也有一个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
它似乎给出了正确的结果,作为一个强调的非大师似乎不言自明,但是——三选?!?!——我不禁觉得一定有更好的办法。
有没有?