【问题标题】:Insert data into two columns only if not duplicate仅在不重复的情况下将数据插入两列
【发布时间】:2017-09-23 11:07:01
【问题描述】:

我有一个带有 id(AUTO_INC)、user_id、user_interest 列的 user_interests 表。 我想要一种简单的方法将数据插入到 user_id 和 user_interest 中而不会出现重复条目​​。

例如如果我以前有这样的桌子。

+------------------------------+
| ID | user_id | user_interest |
+------------------------------+
| 1  | 2       | Music         |
| 2  | 2       | Swimming      |
+------------------------------+

如果我现在insert into table (user_id, user_interest) values ((2, Dance),(2, Swimming),我只需要插入 (2,dance) 条目 - 不需要 (2, 游泳),因为 (2, 游泳) 已经存在于表中。

我见过upsert 命令,也尝试过创建如下命令,但它不起作用。

INSERT INTO `user_interests`( `user_id`,`interest` )
VALUES ("2","Music")
WHERE (SELECT COUNT(`interest`) FROM `user_interests`
       WHERE `interest` = "Music" AND `user_id` = "2"
       Having COUNT(`interest`) <=0 )

【问题讨论】:

  • 为表添加唯一约束,即unique(user_id, user_interest)
  • 标记您正在使用的 dbms。添加更多示例数据 - 并尝试插入数据 - 并向我们展示预期结果!

标签: sql insert duplicates


【解决方案1】:

使用 NOT EXISTS 方法:

INSERT INTO your_table (user_id ,user_interest )
SELECT @userId , @UserIntreset 
WHERE NOT EXISTS(SELECT 1 FROM your_table user_id = @userid AND user_interest 
= @userinterest )

或在您的表中创建唯一约束,

 ALTER TABLE your_table 
 ADD CONSTRAINT Constraint_Name UNIQUE (Column_Name1,Column_Name2)

【讨论】:

    【解决方案2】:

    修改表定义,即您可以将唯一约束添加到 (user_id | user_interest)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-27
      • 2020-08-28
      • 2014-08-26
      • 2018-09-25
      • 1970-01-01
      • 1970-01-01
      • 2011-07-14
      • 1970-01-01
      相关资源
      最近更新 更多