簡體   English   中英

是否可以在同一個sql查詢中進行插入或更新?

[英]Is it possible to make an insert or an update in the same sql query?

我有一個問題似乎很容易,但我沒有通過惡意解決它

我有這個表與網站訪問者的統計數據

+-----------------------------+
+ date        | visits        +
+-----------------------------+
+  2014-03-17 | 198           +
+  2014-03-18 | 259           +
+  2014-03-19 | 94            +                 
+-----------------------------+

我的問題是將數據插入表中的正確方法是什么。

目前我在做的是:

$date = date("Y-m-d");    

$result = mysql_query("SELECT Count(*) as count FROM table WHERE date = '$date'");
$row = mysql_fetch_array($result);
$count = $row['count'];

if($count > 0){
mysql_query("UPDATE table SET visits = visits+1 WHERE date = '$date'");
}else{
mysql_query("INSERT INTO table (`date`, `visits`) VALUES ('$date', '1');");
}

這是更新表格的正確方法還是更好的方法? 是否可以僅使用一個SQL查詢來更新它,例如:

mysql_query("If row exists update table else insert");

我不知道這是否可行。

非常感謝你提前! 如果你能幫助我,我將非常感激。

是的,如果您的date是表格中的關鍵

INSERT INTO `table`(`date`, `visits`) 
VALUES(`$date`, `1`)
ON DUPLICATE KEY UPDATE
`visits`=`visits`+1

參考: MYSQL :: INSERT ... ON DUPLICATE KEY UPDATE

注意:您正在使用不推薦使用的mysql_*函數(意味着過時,不再受支持,不再修改),因此請嘗試使用mysqli_*PDO

嘗試

INSERT INTO `tabelname`(`date`, `visits`) VALUES ($date,1) 
ON DUPLICATE KEY UPDATE `visits` = `visits`+1

注意:必須將date列設置為UNIQUE索引

提示:不要使用mysql關鍵字作為列名(日期)

參考

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM