在MySQL中用SP更新/标记重复条目

2024-09-29 19:22:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Python3中编写了一个生成大量数据的程序,我想使用python脚本将这些数据存储在MySQL中,该脚本调用包含查询的存储过程

我有一个非常大的数据库+/-350万。在这个数据库中,我用这个查询整理出了一些重复项:

SELECT oligoSequence FROM Oligos GROUP BY oligoSequence HAVING COUNT(oligoSequence) > 1;

现在我得到了以下存储过程:

DELIMITER //
CREATE PROCEDURE sp_mark_duplicate_oligos() 
BEGIN 
SELECT oligoSequence FROM Oligos GROUP BY oligoSequence HAVING count(oligoSequence) > 1;
END // 
DELIMITER ;

至于我的tabel,我得到了一个tinyint(isUniqueProbe),如果它是重复的,我想将它从0改为1

CREATE TABLE Oligos 
(   gene_id             varchar(30)     not null, 
oligoStartposition  int             not null, 
oligoSequence       varchar(25)     not null, 
incubationTemp      decimal(5,2)    not null, 
isUniqueProbe       tinyint(1), 
primary key(gene_id, oligoStartposition), 
foreign key(gene_id) references Genes(id) 
)ENGINE=INNODB;

但是我对MySQL还很陌生,我似乎无法在存储过程中使用update语句,也许我已经使用它太久了,但是如果有人能对此有所了解,我将非常感激

提前谢谢, 埃里克


Tags: 数据from脚本id数据库by过程mysql
1条回答
网友
1楼 · 发布于 2024-09-29 19:22:19

Python似乎与这个问题无关,也与它在存储过程中的事实无关

UPDATE Oligos o
JOIN (SELECT oligoSequence
      FROM Oligos
      GROUP BY oligoSequence
      HAVING COUNT(*) > 1) dups
ON o.oligoSequence = dups.oligoSequence
SET isUniqueProbe = 1

您应该索引oligoSequence,以提高效率

相关问题 更多 >

    热门问题