因此,正如您所做的那样,我正在编写一个SQL查询,并且偶然发现了一个问题。我想做的是每当一个唯一用户访问某个页面时,就在数据库中触发一个查询。唯一性是通过session_id()完成的,因为那通常是非常可靠的。
我想要的是一个SQL查询,该查询将一行数据插入两列中,但是仅在这两列尚未具有相同值的情况下。
如果用户x
访问名为的页面page1
,则在数据库中,它将记录如下所示:
+------------+---------+
| page_name | user_id |
+------------+---------+
| page1 | x |
+------------+---------+
我将如何编写查询以检查表以查看所插入的数据是否重复?
我当前的查询如下(它只是一个标准的插入查询):
INSERT INTO `page_views` (`page_name`, `user_id`) VALUES ('.$pageName.', \''.session_id().'\')
使用INSERT IGNORE而不是INSERT。如果一条记录与现有记录不重复,MySQL照常插入它。如果记录是重复的,则IGNORE关键字告诉MySQL静默丢弃它,而不会产生错误。
以下示例不会出错,并且不会插入重复的记录。
语法很简单-只需在“ INSERT”之后添加“ IGNORE”即可,如下所示:
INSERT IGNORE INTO mytable
(pk, f1, f2)
VALUES
('abc', 1, 2);
插入多个记录一次插入多个记录时,不会插入的记录将不会,但可以插入的记录将是:
INSERT IGNORE INTO mytable
(pK, f1, f2)
VALUES
('abc', 1, 2),
('def', 3, 4),
('ghi', 5, 6);
在上面的第二个示例中,如果已经存在“ abc”和“ def”的记录,则不会插入这两个记录,但是会插入“ ghi”的记录。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句