我正在使用PostgreSQL 9.3,但此sql无效:
UPDATE revision_table
SET (code, uuid, converted_entity1uuid, converted_entity1code) =
(SELECT convertedT.code, convertedT.uuid, convertedT.uuid, convertedT.code
FROM currency convertedT
INNER JOIN currency_conversion_aud conversionT on conversionT.currency1_id = convertedT.id
WHERE conversionT.id = 125
ORDER BY rev DESC LIMIT 1),
(converted_entity2uuid, converted_entity2code) =
(SELECT convertedT.uuid, convertedT.code
FROM currency convertedT
INNER JOIN currency_conversion_aud conversionT on conversionT.currency2_id = convertedT.id
WHERE conversionT.id = 125
ORDER BY rev DESC LIMIT 1)
WHERE id = 12;
错误:
ERROR: syntax error at or near "SELECT"
LIGNE 3 : (SELECT convertedT.code, convertedT.uuid...
但是如果我在postgres 9.6中播放此sql,则工作正常
UPDATE revision_table
SET (code, uuid, converted_entity1uuid, converted_entity1code) =
(SELECT convertedT.code, convertedT.uuid, convertedT.uuid, convertedT.code
FROM currency convertedT
INNER JOIN currency_conversion_aud conversionT on conversionT.currency1_id = convertedT.id
WHERE conversionT.id = 12
ORDER BY rev DESC LIMIT 1),
(converted_entity2uuid, converted_entity2code) =
(SELECT convertedT.uuid, convertedT.code
FROM currency convertedT
INNER JOIN currency_conversion_aud conversionT on conversionT.currency2_id = convertedT.id
WHERE conversionT.id = 12
ORDER BY rev DESC LIMIT 1)
WHERE id = 12;
UPDATE 0
Temps : 75,359 ms
由于生产版本在9.3中,我如何转换为与9.3兼容
感谢帮助
终于解决了:
UPDATE
revision_table
SET
code = sub1.code,
uuid = sub1.uuid,
converted_entity1uuid = sub1.uuid,
converted_entity1code = sub1.code,
converted_entity2uuid=sub2.uuid,
converted_entity2code=sub2.code
FROM (
SELECT convertedT.code, convertedT.uuid
FROM currency convertedT
INNER JOIN currency_conversion_aud conversionT
ON conversionT.currency1_id = convertedT.id
WHERE conversionT.id = 12
ORDER BY rev DESC LIMIT 1
) sub1,
(
SELECT convertedT.uuid, convertedT.code
FROM currency convertedT
INNER JOIN currency_conversion_aud conversionT
ON conversionT.currency2_id = convertedT.id
WHERE conversionT.id = 12
ORDER BY rev DESC LIMIT 1
) sub2
WHERE id = 12;