我的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不为null(因此用一个键填充),我的目标是使用Zdef属性中的Text填充Branche_firma_val。 在ZDEFPROPERTY中是Text列 在ZSYSPROPERTY中是ID(键)列 这就是我加入他们的原因。 现在我有一行值+键
如果我让它运行语句,它会对=运算符的许多结果说。我想select的结果会返回sysproperty = Firma_key的所有文本。 我的问题是,我不知道我怎么能告诉它我需要每行另一把钥匙..
你知道我的意思吗?
我希望如此
干杯史蒂文
编辑:
实施例
Z_SKM
Branche_firma_Key = 221
branche_firma_val = NULL
与ZSYSPROPERTY联合的ZDEFPROPERTY
文字="推销员"
syspropertyid =" 221"
解决方案应该是:
branche_firma_key = 221
branche_firma_val =推销员
每一行的问题都是Brnache_firma_key不同的问题。 我想我需要一个解决方案来制作一个iterativ sql语句。
答案 0 :(得分:0)
这是您的查询:
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;