重复插入记录
问题描述:
我有一个数据库表,它记录了每个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);
然后这用于定义插入匹配现有行的时间。
谢谢,这工作完美。 – 626