【问题标题】:I need to update a table with a certain condition我需要更新具有特定条件的表
【发布时间】:2019-08-09 13:22:47
【问题描述】:

我在 PL/SQL 中的一些逻辑操作有问题。

基本上我有一张桌子:

|DOMAIN|SECOND_NAME|SOME_VALUES|
|   X  |     XX    |28309128312|
|   X  |     XX    |11121309011|
|   Y  |     YY    |55583202300|
|   Z  |     ZZ    |00000912323|

实际上,我的表的每一行都有 DOMAIN 列,但 SECOND_NAME 行没有得到 valorized。现在我需要以某种方法更新该行。我在 excel 中有这些值,因为该 excel 中的名称就像一个别名。 我将找到的每个别名都写在一个文件中,我将只使用 DUAL 通过 cursor->for->loop 更新它。

问题是:在我用别名编写的文件中只有 1 次出现:

xx
yy
zz
vv
bb
nn
mm

table_example: 在那里,我有 2 个具有相同类型 X 的域,当然 SECOND_NAME 对两者都是相等的。

如果我有一个只有一个别名且只有 1 次出现的对偶,我如何使用游标更新每条记录,但如果 DOMAIN 相同,我需要使用我之前使用的相同 SECOND_NAME 进行 valorized?

我不能有这样的情况:

|DOMAIN|SECOND_NAME|SOME_VALUES|
|   X  |     XX    |28309128312|
|   X  |     CC    |11121309011|   <----- error IT MUST BE 'XX'
|   Y  |     YY    |55583202300|
|   Z  |     ZZ    |00000912323|

【问题讨论】:

  • 拜托,你能发布你的代码吗?
  • 我没有代码,我正在想一个代码。
  • 抱歉,您必须尝试一下。 SO 不是编码服务,但我们很乐意为您提供帮助。

标签: sql oracle sql-update


【解决方案1】:

如果您想将每个domainsecond_name 设置为相同的值,您可以这样做:

update t
    set second_name = (select min(t2.second_name) from t t2 where t2.domain = t.domain)
    where exists (select 1 from t t2 where t2.domain = t.domain);

我不确定 Excel 中的数据与这个问题有什么关系。

如果这些列需要相同,您的数据模型就有问题。我认为您需要一个 domains 表,其中 second_name 仅定义一次。

【讨论】:

  • 该表包含不同大小写的相同 DOMAINS,因此文件中的第二个名称仅被写入 1 次,每次 DOMAINS 相同时都必须插入:如果我插入 second_name " ElectricCase”,因为域是“fftr_Elec_case”,如果列表中的下一个域相同,则必须再次插入“ElectricCase”。但是在excel上只写一次
猜你喜欢
  • 1970-01-01
  • 2017-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多