2016-12-21 18 views
1

私は以下の2つのSQLクエリを持っています。彼らは、別々のw/nの同じPHPスクリプトでうまく動作します。パフォーマンスを賢明に組み合わせることでメリットがありますか?もしそうなら、それはどのように行われますか? COALESCEの部分では、私はそのコラムを一度しか更新したくないので、私は困惑しています。SQL文を組み合わせる

$sql_update = "INSERT INTO mobile_update(cust_id, last_name, first_name, dob) VALUES('$cust_id', '$last_name', '$first_name', '$dob') ON DUPLICATE KEY UPDATE last_name = '$last_name', first_name = '$first_name', dob = '$dob';"; 
$sql_initial_entry = "UPDATE mobile_update set initial_entry = COALESCE(initial_entry, NOW()) where cust_id = '$cust_id';"; 
+1

なぜデフォルト値ではないのですか? – jarlh

答えて

1

$ sql_initial_entryには、(前の文で作成された)既存の行の値のみを変更する更新文が含まれています。これらのクエリを「結合する」方法はありません。あなただけではnullを渡すこの方法はSQL Auto-Increment by DateTime

:から

ALTER TABLE `mobile_update' 
CHANGE COLUMN `initial_entry` `initial_entry` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP; 

のように - 私は実行可能な唯一の戦略は、オートインクリメント・カラムとして(日付/タイムスタンプであることをseemd)あなたのinitial_entryを設定することであると思うだろうinsert文を実行すると、現在のタイムスタンプが設定されます。 Coalesceは、代替値を持つNULLを処理します。期待する場合はnullを許可してください。