【问题标题】:How to write a query so that I can insert a row based on another row value [closed]如何编写查询,以便我可以根据另一行值插入一行 [关闭]
【发布时间】:2020-10-20 13:18:01
【问题描述】:

谁能帮我构建一个 SQL 查询,以便我可以根据 CONDITION 插入一个新行。假设有任何行的 Property 为“Name”,那么我需要插入一个新行 财产,价值-->(“老板”,“在场”) 否则财产,价值-->(“老板”,“缺席”)。请注意,我不想使用“双”表,因为我没有使用 oracle DB。先感谢您。 下面是我的数据库表结构。

编辑 1:属性是主键。

【问题讨论】:

  • 如果有两行属性为Name怎么办?
  • 属性是该表中的“主键”。

标签: sql oracle subquery case sql-insert


【解决方案1】:

您可以使用case 表达式和exists 条件:

insert into mytable (property, value)
select 'Boss',
    case when exists(select 1 from mytable where property = 'name') 
        then 'isPresent' 
        else 'isAbsent' 
    end
from dual

【讨论】:

  • 感谢您的回复,我收到“SQL 错误:ORA-00923:FROM 关键字未在预期位置找到”
  • @AshishBurnwal:所以你正在运行 oracle。只需在查询末尾添加from dual,就像我更新的答案一样。
  • 我们可以让它与数据库无关吗?因为我的应用程序没有与 Oracle DB 紧密耦合。
  • @AshishBurnwal:我认为在这种情况下这是不可能的。 SQL 语言本质上是依赖于供应商的,这在此查询中有所体现。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-25
  • 1970-01-01
  • 2011-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多