2013-08-01 52 views
0
  • 「過程」是事先準備好的聲明
  • 「QID」 &「UnqId」是外鍵子(只是一個索引)
的方法

我想使它一個行語句(含3個查詢)的MySQL使用子查詢的或等如果數據存在,那麼更新否則插入,MySQL的使用子查詢或等

$get = $call->process("SELECT UnqId FROM table1 
        WHERE QId = ? AND UnqId = ?", 
        array($_SESSION['Q'], $_SESSION['U'])); 
if($get) //if table exists 
{ 
$call->process("UPDATE table1 SET col3 = ?, col4 = UTC_TIMESTAMP() 
       WHERE QId = ? AND UnqId = ?", 
        array('OK', $_SESSION['Q'], $_SESSION['U'])); 
} 
else 
{ 
$call->process("INSERT INTO table1 VALUES (?, ?, ?, UTC_TIMESTAMP(), 
       NULL, NULL, NULL, NULL)", 
        array($_SESSION['Q'], $_SESSION['U'], 'OK')); 
} 
+0

如果你使用MySQL查詢,你可以看看[INSERT對重複密鑰更新](http://dev.mysql.com/doc/ refman/5.0/en/insert-on-duplicate.html)語法,這是一件美麗的事情!但請注意,如果你移動數據庫,這是隻有mysql的 – Dale

+0

@Dale但我怎麼能做三個查詢一行查詢?包括SELECT語句。 – Frank11

+0

我不確定你是否可以,先運行你的選擇,然後根據我以前的評論中的鏈接文檔創建一行插入/更新 – Dale

回答

2

您可以使用使用ON DUPLICATE KEY UPDATE

INSERT INTO table (a,b,c) VALUES (1,2,3) 
    ON DUPLICATE KEY UPDATE c=c+1; 
+0

但如何結合'選擇'語句與其他查詢 – Frank11

+0

是你的選擇只是爲了檢查記錄是否有權利? – DevZer0

+0

是的...我應該使用'EXISTS'的sql – Frank11

1

檢出ON DUPLICATE KEY UPDATE語法在一個查詢中執行。並嘗試下次搜索,例如。 「重複的MySQL更新」。

相關問題