因此,我正在为我的程序编写一个多查询来检查用户是否查看过一个页面。如果他们没有查看它,则在名为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