【发布时间】:2021-05-05 14:08:12
【问题描述】:
我有一个如下所示的表格:
CREATE TABLE public.mytable (
p_id varchar(40) NOT NULL,
j_id varchar(48) NOT NULL,
u_id varchar(255) NOT NULL
);
我使用以下方法根据 p_id 和 j_id 查找行:
SELECT * FROM mytable WHERE p_id = ? AND j_id = ? LIMIT 10
我想扩展这个查询,让它也排除一些行,例如,我有一个这样的列表:
class MyEntity {
public p_id
public j_id;
public u_id;
}
List<MyEntity> rowsToExclude = new ArrayList<>();
rowsToExclude.add(new MyEntity(1, 3, 5));
rowsToExclude.add(new MyEntity(7, 8, 9));
如何将rowsToExclude 输入到查询中,也许使用 NOT IN?
例如,(不是真正的代码),类似:
SELECT * FROM mytable WHERE p_id = ? AND j_id = ?
AND NOT IN(rowsToExclude)
LIMIT 10
相关:
【问题讨论】:
-
使用主键过滤掉行。表有PK吗?
-
表没有主键
-
没有 ORDER 的限制很少有意义。
-
行被抓取后会被删除,这是在循环中完成的,直到所有行都被删除,所以我认为这里不需要 ORDER BY。
标签: java sql postgresql jdbi