0

私は2つのテーブルを持っています

役職

int_PostId , dtm_Publishdate               createddate
1             2013-02-07 21:12:03.247
2             2013-03-07 21:12:03.247
3             2013-03-07 21:12:03.247

とポストメタ

int_postmetaid, metakey ,     metavalue ,     int_PostId , int createddate
   1              chk           en                1             2013-02-07  
   2              chk           ps                1             2013-02-07  
   3              chk           cs                1             2013-02-07  
   4             publishdate     2013-03-07       1             2013-02-07
   5              chk           en                2             2013-02-07  
   6              chk           ps                2             2013-02-07  
   7              chk           cs                2             2013-02-07    
   8             publishdate     2013-03-07       2             2013-02-07
   9              chk           en                3             2013-02-07  
   10              chk           ps               3             2013-02-07  
   11              chk           cs               3             2013-02-07  

これらの条件で投稿の dtm_Publishdate 列を更新したい。1つのクエリで実行したい

1) publishdateメタキーが postmetaテーブルに存在する場合、投稿の*dtm_Publishdate*をそのメタ値で更新します

2) 存在しない場合は、投稿の dtm_Publishdate を作成日で更新します。

私は本当に状態のシナリオにこだわっています。誰かが助けることができますか?

4

2 に答える 2

0

postmeta に publishdate 行が 1 つしかない場合は、次のような方法を試すことができます。

UPDATE post 
SET dtm_publishdate =
    CASE WHEN pd.metavalue IS NOT NULL
        THEN metavalue
        ELSE createddate
    END
FROM
    post p LEFT OUTER JOIN
    (SELECT
        int_postID, metavalue
    FROM 
        post p INNER JOIN
        postmeta m ON
        p.int_postID = m.int_postID
    WHERE
        metakey = 'publishdate') pd ON
    p.int_postid = pd.int_postID
于 2013-05-20T16:04:35.840 に答える