我正在向表中插入新记录。记录可以不止一个。
如果我插入值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(类似的东西)),其余的数字保持插入。
我的问题是,如何找到这个重复的数字?
答案 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;
根据您的应用需求编辑或使用它。干杯!