从另一个表更新1列

时间:2017-04-23 20:28:20

标签: sql postgresql

如何进行更新?这是代码,它不起作用。 (三个本地表是可行的,我不能使用更新进行最后一次查询)

WITH 
allowedIds AS ( 
    SELECT client_id as id FROM cardHistory 
    WHERE ( (now())::date -(date_set)::date )::int > 1095 ),
thirtyPercents AS (
    SELECT a.id, ( ( (card_period[2][1])::date - (card_period[1][1])::date)::double precision / 10 ) * 3 AS percent
    FROM client a, allowedIds b
    WHERE a.id = b.id
 ),
 dataSets AS (
     select a.id, (a.card_period[2][1] + ( (b.percent)::int * interval '1 day' ) ) as newDate
    from client a, thirtyPercents b
    where a.id = b.id
 )

    UPDATE client
    SET a.card_period[2][1] = b.newDate
    FROM dataSets b INNER JOIN client a ON a.id = b.id;

1 个答案:

答案 0 :(得分:1)

我想你想要这个:

UPDATE client
    SET card_period[2][1] = b.newDate
    FROM dataSets d 
    WHERE client.id = d.id;

请注意,查询中未提及client两次。