0

我已使用批量更新在两个表之间同步数据,如下所示

$sqlProc="
UPDATE cards
SET cards.card_no = t2.card_number,
    cards.expiry_date=t2.expiry_date OUTPUT INSERTED.Id AS 'updated_id'
FROM cards
INNER JOIN card_temp t2 ON (cards.account_no = t2.account_number
                            AND cards.customer_name=t2.customer_name)
WHERE cards.is_disabled='N'";
        debug($this->Request->query($sqlProc));

上面的查询还将返回OUTPUT INSERTED.Id AS 'updated_id'在 sql server 编辑器中使用的更新记录的主键,但是当我调试 sql 时

debug($this->Request->query($sqlProc));

然后它返回true成功的查询和false不成功的查询。

有什么想法可以提取updated_id到数组,以便我可以将这些 id 用于另一个表

4

1 回答 1

0

好吧,我终于想通了。我创建了一个中间表做了以下

//inserted into temp_id (bridge table)
$sqlProc="insert into temp_id select * FROM (update cards 
                        set         cards.card_no = t2.card_number,cards.expiry_date=t2.expiry_date
                        OUTPUT INSERTED.Id AS 'updated_id'
                        from        cards 
                        inner join  card_temp t2
                        on          (cards.account_no = t2.account_number and cards.customer_name=t2.customer_name)
                        where cards.is_disabled='N'
                        ) AS t";
        $this->Request->query($sqlProc);
        //fetch from intermediate table

        $sqlSel="SELECT * FROM temp_id";
        $arr=$this->Request->query($sqlSel);
          //this array will fetch all updated id's
        debug($arr);
        $sqlDel="DELETE FROM temp_id";
        $this->Request->query($sqlDel);
于 2013-04-02T07:43:01.223 回答