【问题标题】:What do I need to change in my SQL statement我需要在我的 SQL 语句中更改什么
【发布时间】:2014-10-08 11:29:22
【问题描述】:

我的 SQL 语句还没有工作。

这里我给你看实际的陈述:

 UPDATE [sysdba].[Z_SKM]
SET Branche_Firma_val = (select  Text from ZDEFPROPERTY
                        join ZSYSPROPERTY
                        on ZDEFPROPERTY.ZDEFPROPERTYID=ZSYSPROPERTY.ZDEFPROPERTYID
                        where  ZSYSPROPERTY.SYSPROPERTYID =branche_firma_key and Valuetype = 'branch')

WHERE branche_firma_key is not  null

说明: 我有一个名为 Z_SKM 的表,其中有两个重要列 1. Branche_firma_val ; 2. Branche_firma_key

我的目标是如果 branche_firma_key 不为空(所以它用一个键填充),则用 Zdefproperty 中的文本填充 Branche_firma_val。 在 ZDEFPROPERTY 中是 Text 列 在 ZSYSPROPERTY 中是 ID(键)列 这就是我加入他们的原因。 现在我在一行中有值 + 键

如果我让运行该语句,它会显示 = 运算符的许多结果。我猜选择的结果会返回 sysproperty=Firma_key 的所有文本。 我的问题是我不知道如何告诉它我需要为每一行另一个键..

你知道我的意思吗?

希望如此

干杯史蒂文

编辑:

例子

Z_SKM

Branche_firma_Key = 221

branch_firma_val = NULL


ZDEFPROPERTY 与 ZSYSPROPERTY 联接

Text="销售员"

syspropertyid = "221"


解决办法应该是:

branch_firma_key=221

branch_firma_val=销售员


每一行的问题是 Brnache_firma_key 不同。 我想我需要一个解决方案来生成迭代 sql 语句。

【问题讨论】:

  • 内部查询可能返回不止一行,这就是更新失败的原因。您能否提供一些示例数据集来说明您的要求?

标签: sql sql-server join sql-update


【解决方案1】:

这是您的查询:

UPDATE [sysdba].[Z_SKM]
    SET Branche_Firma_val = (select Text
                             from ZDEFPROPERTY join
                                  ZSYSPROPERTY
                                  on ZDEFPROPERTY.ZDEFPROPERTYID = ZSYSPROPERTY.ZDEFPROPERTYID
                             where ZSYSPROPERTY.SYSPROPERTYID = branche_firma_key and
                                   Valuetype = 'branch'
                            )
    WHERE branche_firma_key is not  null;

相关子查询返回不止一行。您需要在匹配的行中进行选择。这是一种方法:

UPDATE [sysdba].[Z_SKM]
    SET Branche_Firma_val = (select max(Text)
                             from ZDEFPROPERTY join
                                  ZSYSPROPERTY
                                  on ZDEFPROPERTY.ZDEFPROPERTYID = ZSYSPROPERTY.ZDEFPROPERTYID
                             where ZSYSPROPERTY.SYSPROPERTYID = branche_firma_key and
                                   Valuetype = 'branch'
                            )
    WHERE branche_firma_key is not  null;

【讨论】:

  • 你好,戈登,是的,我知道它因为多行而不起作用。我的问题或更好的是我的下一个目标是告诉语句我需要为每一行另一个 branche_firma_key。我将添加一个示例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多