【问题标题】:Duplicate Records on Insert插入重复记录
【发布时间】:2014-05-10 00:01:24
【问题描述】:

我有一个数据库表,记录了每个 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 |
+----+---------+---------+--------+

【问题讨论】:

    标签: mysql primary-key unique-key unique-index


    【解决方案1】:

    您是否在表上定义了唯一键?对于你想要的,我认为是:

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

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

    【讨论】:

      猜你喜欢
      • 2015-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多