MySQL - 更新表IF记录不存在于另一个表中

时间:2016-05-31 20:44:45

标签: php mysql

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

感谢所有帮助。 感谢

2 个答案:

答案 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