我有两张表foo
和bar
。对于每个foo,都有零个或多个条形。只需要LEFT OUTER JOIN
给我一个结果集,其中每行给我一个foo加上其中一个条(或NULL
,如果没有与foo相关的条)。1} p>
但是,假设我希望所有结果将这些结果组合在一起。请注意,我不希望它们聚合;也就是说,我不希望每个主键的所有行foos都崩溃了。如果有主键foo123
的foo,我只希望所有foo123
foos一起显示。我不希望有,例如,[foo123, foo123, foo456, foo123]
;我想[foo123, foo123, foo123, foo456]
甚至[foo456, foo123, foo123, foo123]
。
当然我可以用foo主键排序,但排序看起来有点矫枉过正,因为我不关心foo的顺序;只有具有相同ID的所有foos在结果集中显示为“分组”。
在SQL中是否有一种更有效的方法可以根据某些标准“一起分组”而不进行排序?
我正在使用Oracle以防万一。
(对于它的价值,我有一个“精彩”的想法,即使用一个相关子查询的连接,以便为每个foo独立查找条形图,但我忘记了我不能有一个相关的子查询FROM
条款。)
答案 0 :(得分:4)
除了:
之外,我不相信有任何办法可靠地做到这一点ORDER BY foo.foo_primary_key
原因是,在没有ORDER BY
的情况下,SELECT
语句返回的结果顺序是未定义。
可能有一些方法可以编写这样的查询,在您的Oracle版本中,将在不使用ORDER BY
的情况下按照您希望的方式返回结果 - 但这很可能会出乎意料地发生变化。依靠这样的解决方案是不明智的。