使用 jOOQ 使用 WHERE IN 保留结果顺序
Preserve order of results with WHERE IN with jOOQ
问题已在ORDER BY the IN value list、
中详细描述
但要重复:我想 select id 为 1、3、2、4 的项目按特定顺序排列。
我的 jOOQ 片段:
var results = create.select().from(ITEM).where(ITEM.ID.in(1,3,2,4)).fetchInto(Item.class);
生成的 results
列表中的项目将按 1、2、3、4 的顺序排列。
如何使用 jOOQ 保留项目的顺序?
您可以为此使用 Field.sortAsc()
:
create.select()
.from(ITEM)
.where(ITEM.ID.in(1, 3, 2, 4))
.orderBy(ITEM.ID.sortAsc(1, 3, 2, 4))
.fetchInto(Item.class);
或者,当然,为了避免重复列表,使用局部变量:
Integer[] ids = { 1, 3, 2, 4 };
create.select()
.from(ITEM)
.where(ITEM.ID.in(ids))
.orderBy(ITEM.ID.sortAsc(ids))
.fetchInto(Item.class);
问题已在ORDER BY the IN value list、
中详细描述但要重复:我想 select id 为 1、3、2、4 的项目按特定顺序排列。
我的 jOOQ 片段:
var results = create.select().from(ITEM).where(ITEM.ID.in(1,3,2,4)).fetchInto(Item.class);
生成的 results
列表中的项目将按 1、2、3、4 的顺序排列。
如何使用 jOOQ 保留项目的顺序?
您可以为此使用 Field.sortAsc()
:
create.select()
.from(ITEM)
.where(ITEM.ID.in(1, 3, 2, 4))
.orderBy(ITEM.ID.sortAsc(1, 3, 2, 4))
.fetchInto(Item.class);
或者,当然,为了避免重复列表,使用局部变量:
Integer[] ids = { 1, 3, 2, 4 };
create.select()
.from(ITEM)
.where(ITEM.ID.in(ids))
.orderBy(ITEM.ID.sortAsc(ids))
.fetchInto(Item.class);