我有2个临时表。一个人有数据列明智。
OrderCode OrderType
ABC 1000
一个人有数据行
FieldName Value
ORDER_CODE ABC
ORDER_TYPE 2000
我需要编写一个基本上连接它们的查询,并在表2中存在时更新该值。
记录集结果需要
OrderCode OrderType
ABC 2000
编辑 -
如果表1中有2个订单具有相同的订单代码:
OrderCode OrderType
ABC 1000
ABC 5000
结果集必须是
OrderCode OrderType
ABC 2000
ABC 2000
答案 0 :(得分:1)
选择行集:
SELECT tt1.ordercode, tt2_type.Value
FROM Table2 AS tt2_code
JOIN Table1 tt1
ON tt1.orderCode = tt2_code.value
JOIN
Table2 AS tt2_type
ON tt2_type.fieldName = 'ORDER_TYPE'
WHERE tt2_code.fieldName = 'ORDER_CODE'
根据Table1
:
Table2
WITH q AS
(
SELECT tt1.ordercode, tt2_type.Value
FROM Table2 AS tt2_code
JOIN Table1 tt1
ON tt1.orderCode = tt2_code.value
JOIN
Table2 AS tt2_type
ON tt2_type.fieldName = 'ORDER_TYPE'
WHERE tt2_code.fieldName = 'ORDER_CODE'
)
UPDATE q
SET oldvalue = newvalue
这是JOIN
- 较少语法更易读的情况之一。