所以,我正在为我的程序编写一个多查询来检查用户是否查看过某个页面。如果他们没有查看它,则会在名为views
的表中创建记录,然后在名为numViews
的表中更新名为pages
的记录,而如果他们&# 39;已经看过了,没有任何反应。
我已经为将记录插入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;
感谢所有帮助。 感谢
答案 0 :(得分:1)
如果我理解正确的更新..应该是这个(不在条款中)
update pages
set numViews =numViews +1
where (pageID, viewID) not in (select pageID, viewID from views)
答案 1 :(得分:1)
您在LEFT JOIN
UPDATE
UPDATE pages AS p
LEFT JOIN views AS v ON v.pageID = p.pageID AND v.viewerID = viewerID
SET p.numViews = p.numViews + 1
WHERE p.pageID = {$this->pageID} AND p.viewerID = {$this->viewerID}
AND v.viewerID IS NULL