假设我有
List<Record> result = new ArrayList<>(map.values());
这有效。
但是,如果我说
select distinct id, flavor from bageltown order by id, flavor
我收到一个错误,指出元素中不存在元素。
这当然是通过将查询编辑为这样来解决的:
select distinct id, flavor from bageltown order by id, flavor='lox' desc, flavor
但是我想知道-为什么必须在输出中添加布尔列?
答案 0 :(得分:2)
DISTINCT
(而不是DISTINCT ON
)的目的是删除结果表中的重复行。在您的特定情况下(由于结果表中有id
,这可能不必担心,但是如果您按flavor='lox'
排序并且flavor='lox'
不是结果列,无法保证没有任何行表示(如果不是要删除重复项的话)同时具有flavor='lox'
和flavor<>'lox'
,并且不清楚如何对它们进行排序。如果将flavor='lox'
和'flavor<>'lox'
视为单独的行,那么您将回到表中有重复的行。