【问题标题】:JDBC. Replace in all rows value of the columnJDBC。替换列的所有行值
【发布时间】:2020-10-21 01:58:55
【问题描述】:

Java 11. PostgreSQL。

在数据库中有下表:

TABLE public.account (
    id bigserial NOT NULL,
    account_id varchar(100) NOT NULL,
    display_name varchar(100) NOT NULL,
    is_deleted bool NULL DEFAULT false,
);

此表中大约有 1000 行。在代码中我有一个静态方法,它返回随机字符串 - Helper.getRandomName()

如何使用 JDBC 在此表 (public.account) 中为所有行将“display_name”值替换为 Helper.getRandomName() 的值?

【问题讨论】:

  • 您希望所有行获得相同的值,还是希望每行获得不同的值?如果是最后一个,最好使用 SQL 函数生成随机名称。
  • 我希望每一行都有不同的值。

标签: java jdbc


【解决方案1】:

这是一个 SQL 问题。您需要运行更新查询:

UPDATE public.account set display_name = ?

并提供新名称作为参数。没有WHERE 子句意味着所有行都会受到影响。

如果您想为每一行单独执行此操作,那就更难了。您需要执行一个 select 语句来查找所有 ID,然后您可以使用 JDBC 准备一批更新,为每个 ID 添加一个 where 子句。

JDBC 只是简单的 SQL 执行的一个瘦 Java 包装器。

【讨论】:

  • 另一种选择是使用可更新的结果集并通过结果集进行更新,但这通常会转化为表面之下的单个行更新语句。
  • 我想为每一行单独做这个,所以每一行都有唯一的价值。
猜你喜欢
  • 2019-07-30
  • 2022-10-14
  • 1970-01-01
  • 2022-12-21
  • 2021-03-08
  • 2022-07-14
  • 2022-12-22
  • 2018-05-05
  • 2022-07-03
相关资源
最近更新 更多