在多插入上查找重复值

时间:2015-04-27 04:41:59

标签: php mysql

我正在向表中插入新记录。记录可以不止一个。

如果我插入值1,2,3,4,5,6,7,9,10

然后它将向表中插入10条记录。

   INSERT INTO table (record) VALUES (1,2..,10) ON DUPLICATE KEY UPDATE record=record 
   //Actually on duplicate key I want to update whole column here (not only the record column on its row 

在1到10的范围内,可能存在一些已经存在的数字。假设已经存在的数字是4,6和9的数字。如果是这样,那么我想找到这个重复的数字是警报或回声,(嘿,这个值已经存在4,6, 9(类似的东西)),其余的数字保持插入。

我的问题是,如何找到这个重复的数字?

7 个答案:

答案 0 :(得分:7)

来源:AskBeen.com How to find duplicate records in MySQL table

例如,如果您想查找title的重复项:

SELECT COUNT(*) c, title 
FROM `data` 
GROUP BY title 
HAVING c > 1

答案 1 :(得分:3)

您可以首先从数据库中选择要插入的值的记录。如果它们存在,则不要插入它们或插入它们。

答案 2 :(得分:3)

您可以从记录表中选择数据库,然后插入数据。如果它们存在于数据库行中,那么如果它们不存在则不插入它们,然后插入数据。

答案 3 :(得分:3)

阅读有关两列之间关系的数据库书,并参阅sql update部分。

答案 4 :(得分:1)

在表格的特定列上创建唯一键约束,您不希望插入重复项。

ALTER TABLE table_name
  ADD CONSTRAINT constraint_name 
  UNIQUE (column_name);

答案 5 :(得分:1)

有点难看但有效的解决方案:

SET @uids := '';
INSERT INTO table (record) VALUES (1,2..,10) ON DUPLICATE KEY UPDATE record = IF(@uids := CONCAT_WS(',', record, @uids), record, record);
SELECT @uids;

我想知道是否有另一种方法可以在ON DUPLICATE KEY UPDATE子句中使用赋值给变量?

答案 6 :(得分:0)

你可以试试这个结构,交配:

START TRANSACTION;
SELECT record INTO @exist_record FROM table WHERE record IN (1,2..,10);
INSERT INTO table (record) VALUES (1,2..,10) ON DUPLICATE KEY UPDATE record=record;
SELECT @exist_record;
COMMIT;

根据您的应用需求编辑或使用它。干杯!