【问题标题】:Working with Sql Developer unable to update table使用 Sql Developer 无法更新表
【发布时间】:2015-04-24 01:21:11
【问题描述】:

问题.. 创建一个 SQL 更新语句,它将 TN 供应商提供的所有产品的 P_DISCOUNT 加倍或 佛罗里达州 我有 2 个表,我正在尝试引用包含状态的供应商表,并且 p_discount 位于产品表中。

update PRODUCT
set P_DISCOUNT = 2 * P_DISCOUNT
where VENDOR.V_STATE in 
  (select VENDOR.V_STATE from VENDOR where  VENDOR.V_STATE = ('FL','TN'))

任何建议都会很棒

谢谢,

【问题讨论】:

  • 您应该真正决定您使用的是 SQL Server 还是 Oracle。这些是非常不同的数据库。
  • PRODUCTVENDOR是什么关系?哪一列连接这些表?
  • PRODUCT 和 VENDOR 用 V_CODE 链接..

标签: sql sql-server oracle oracle-sqldeveloper


【解决方案1】:

更新 PRODUCT 集 P_DISCOUNT = 2 * P_DISCOUNT 其中 V_STATE 在
(select VENDOR.V_STATE from VENDOR where VENDOR.V_STATE in ('FL','TN'))

【讨论】:

  • 从命令中的第 154 行开始获取 thatError 错误 - 更新 PRODUCT 设置 P_DISCOUNT = 2 * P_DISCOUNT where VENDOR.V_STATE in(从 VENDOR 中选择 VENDOR.V_STATE where VENDOR.V_STATE in ('FL' ,'TN')) 命令行错误:156 列:7 错误报告 - SQL 错误:ORA-00904:“VENDOR”。“V_STATE”:无效标识符 00904。00000 -“%s:无效标识符”
  • 请解释这个“答案”如何改进问题中所述的 OP 查询。
  • 表 Product 是否有列 V_STATE?
  • @user3572912 - 您似乎只是复制了 OP 的查询并将其作为“答案”发布。请解释这是如何回答问题的。谢谢。
  • 是的,我现在明白你做了什么。但是,在我看来,这不是一个答案。您需要解释答案,而不仅仅是发布查询并期望人们弄清楚您做了什么。
【解决方案2】:

试试这个查询:

update PRODUCT
set P_DISCOUNT = 2 * P_DISCOUNT
where V_CODE in 
    (select VENDOR.V_CODE from VENDOR where VENDOR.V_STATE IN ('FL','TN'))

您正在根据加入字段过滤条件,而不是根据其中一个表中的任何字段

【讨论】:

  • 错误开始于命令中的第 154 行 - 更新 PRODUCT 设置 P_DISCOUNT = 2 * P_DISCOUNT where V_CODE in(从 VENDOR 中选择 VENDOR.V_CODE,其中 VENDOR.V_STATE = ('FL','TN'))命令行错误:157 列:59 错误报告 - SQL 错误:ORA-01797:此运算符后面必须跟 ANY 或 ALL 01797。00000 -“此运算符后面必须跟 ANY 或 ALL” *原因:*操作:
  • 我更新了答案。需要使用的是IN操作符
  • 谢谢谢谢谢谢!!
猜你喜欢
  • 1970-01-01
  • 2016-02-29
  • 1970-01-01
  • 2015-08-27
  • 2018-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多