2016-05-18 1 views
0

Iamがクエリを打ち明けました。テーブルAのデータを編集するときは、テーブルBに同じデータが存在するかどうかを確認する必要があります。データがテーブルBにある場合は更新を無視し、データが空またはNullの場合はテーブルAのデータを表Bの更新。以下のクエリiamがほぼ達成しましたが、データが表Bにあるときは、データを削除するだけです。データが存在する場合、実際には無視する必要があります。私が推測するケースステートメントの小さな問題。 Plsは私にこれを助けます。データがNULLであるかCASE文で空である場合に更新するMySQlクエリ

$strSQLInsert2 = "UPDATE Table B 
SET 
`tender_intendername` = CASE WHEN `tender_intendername`='' or `tender_intendername` IS NULL 
THEN '".$values["intendername1"]."' END, 
`no_of_participants` = CASE WHEN `no_of_participants`='' Or `no_of_participants` IS NULL 
THEN '".$values["no_of_participants"]."' END 
WHERE tender_id=" . $values["tender_id"]; 
+0

ELSEステートメントを使用する必要がありますか? –

答えて

0

:ので、それはフィールドが空でない場合、フィールドが変更されないことを保証し、ELSE文は、それ自体に等しい各フィールドを設定します

UPDATE Table B 
SET `tender_intendername` = CASE 
           WHEN `tender_intendername`='' or 
            `tender_intendername` IS NULL 
            THEN '".$values["intendername1"]."' 
           ELSE `tender_intendername` END, 
    `no_of_participants` = CASE 
           WHEN `no_of_participants`='' Or 
            `no_of_participants` IS NULL 
           THEN '".$values["no_of_participants"]."' 
           ELSE `no_of_participants` END 
WHERE tender_id=" . $values["tender_id"]; 

NULLではありません。

+0

ありがとうございました。これは私が欲しいものです。 :) –

0

私はそれを解決しました。しかし、結果を達成するために2つのクエリを書く必要があります。

あなたが CASE式に ELSEを追加する必要が
$strSQLInsert2 = "UPDATE `TableB` 
SET 
    `tender_intendername` = '".$values["intendername1"]."' 
WHERE 
    `tender_intendername` = '' 
    OR `tender_intendername` IS NULL AND tender_id=" . $values["tender_id"]; 
関連する問題