因此,我正在爲我的程序編寫一個多查詢來檢查用戶是否查看過一個頁面。如果他們沒有查看它,則在名爲views
的表中創建記錄,然後在名爲pages
的表中更新名爲numViews
的記錄,而如果他們已經查看了它,則不會發生任何事情。MySQL - 更新表IF記錄不存在於另一個表
我有寫入的代碼插入的記錄views
,它保持所有記錄的唯一性。我面臨的問題是更新pages
中的記錄。
僞而言,以下就是我想實現:
if (record_exits_in_table_named_views == false) {
UPDATE record IN pages
INSERT record INTO views
}
以下是我用於添加記錄查詢:
INSERT INTO views
(`pageID`, `viewerID`)
SELECT
T.*
FROM
(SELECT
'.$this->pageID.' pageID,
'.$_SESSION['userID'].' viewerID
)
T LEFT JOIN
views
ON
views.creationID = T.pageID
AND
views.viewerID = T.viewerID
WHERE
views.viewerID IS NULL;
所有幫助表示讚賞。 感謝
使用類似
LEFT JOIN
您可以讓數據庫句柄它:爲視圖表創建一個後插入觸發器,它將更新pages-table或者在需要時從視圖中的條目計算值,因此根本不需要頁面中的值(使用觸發器實際上只是一個操作加快速度)。 – Solarflare