重复插入记录

问题描述:

我有一个数据库表,它记录了每个user_id使用哪个site_id。每当我保存设置时,我都会收到重复的内容。我想要它,所以我可以查询表user_id = 99,并查看哪个site_id与该user_id关联。重复插入记录

SQL:

$sql = "INSERT INTO user_sites (rooftop_id, site_id, created_at, active) 
       VALUES ('$rooftop_id','$key', now(), '$value') 
       ON DUPLICATE KEY 
       UPDATE updated_at = IF(active=VALUES(active),updated_at,NOW()), 
       active = VALUES(active) 
       "; 

电流输出:

+----+---------+---------+--------+ 
| id | user_id | site_id | active | 
+----+---------+---------+--------+ 
| 1 |  99 |  30 |  1 | 
| 2 |  99 |  20 |  1 | 
| 3 |  99 |  40 |  1 | 
| 4 |  32 |  30 |  1 | 
| 5 |  32 |  20 |  1 | 
| 6 |  32 |  40 |  1 | 
| 7 |  32 |  30 |  0 | 
| 8 |  32 |  20 |  0 | 
| 9 |  32 |  40 |  0 | 
+----+---------+---------+--------+ 

所需的输出:

+----+---------+---------+--------+ 
| id | user_id | site_id | active | 
+----+---------+---------+--------+ 
| 1 |  99 |  30 |  1 | 
| 2 |  99 |  20 |  1 | 
| 3 |  99 |  40 |  1 | 
| 4 |  32 |  30 |  0 | 
| 5 |  32 |  20 |  0 | 
| 6 |  32 |  40 |  0 | 
+----+---------+---------+--------+ 

你有没有定义的表的唯一关键?对于你想要的,我认为它是:

create unique index admin_sites_userid_siteid on admin_sites(user_id, site_id); 

然后这用于定义插入匹配现有行的时间。

+0

谢谢,这工作完美。 – 626