我启动并运行此查询,它给出了绝对正确的结果。我总共有4张桌子。 Table1
,Table2
,Table3
和Table4
。结果查询通过连接3个不同的表来提供结果。
现在的问题是我必须更新'每个表的1列PER行。我无法挖掘解决方案。我在同样的问题上停留了2天,任何帮助都会非常明显:)
SELECT TempID,
custom,
STATE,
orgUnit,
displayName ,
stateCust ,
consumer.bol_is_active AS stateConsumer
FROM
(SELECT TempID,
custom,
STATE,
cust.id_orgunit AS orgUnit,
cust.str_display_name AS displayName,
cust.bol_is_active AS stateCust
FROM
(SELECT DISTINCT CA.ID_CUSTOMER AS TempID ,
ca.str_value AS custom,
ci.bol_is_active AS STATE
FROM Table1 CA
JOIN Table2 CI ON CA.ID_CUSTOMER = CI.ID_CUSTOMER AND CI.ID_CUSTOMER = '11667312'
WHERE CA.STR_VALUE='Customer'
AND ci.bol_is_active ='N')
JOIN Table3 Cust ON TempID = cust.id_customer)
JOIN Table4 consumer ON TempID = consumer.id_customer;
我想更新STATE
,statuCust
和stateConsumer
的值。请帮忙。
答案 0 :(得分:1)
您可以将此作为三个单独的UPDATE
语句执行此操作,因为这些值位于不同的表中。这三个更新可以包装在一个事务中,因此它们都可以作为单个操作完成。
每个WHERE
语句的INSERT
子句看起来类似于select的join和where子句,因此要更新的行与select语句显示的行匹配。我现在没时间计算每个INSERT语句,希望这可以指出你正确的方向,我将在稍后更详细地尝试更新这个答案。
BEGIN TRANSACTION ;
-- Update STATE
UPDATE Table2 SET bol_is_active WHERE ... ;
-- Update stateCust
UPDATE Table3 SET bol_is_active WHERE ... ;
-- Update stateConsumer
UPDATE Table4 SET bol_is_active WHERE ... ;
COMMIT;