【发布时间】:2019-01-31 17:39:16
【问题描述】:
我想从数据库中删除重复数据, 这条语句可以在navicat中执行。
delete from Proxy_Main
where (Proxy_Main.ip,Proxy_Main.port)
in (select ip,port from Proxy_Main group by ip,port
having count(*) > 1)
and rowid not in (select min(rowid) from Proxy_Main
group by ip,port having count(*)>1)
错误信息:
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) 靠近 ",": 语法错误 [SQL: '从 Proxy_Main 中删除 (Proxy_Main.ip,Proxy_Main.port) in (select ip,port from Proxy_Main 按 ip 分组,端口 count() > 1) 且 rowid 不在(选择 min(rowid) from Proxy_Main group by ip,port有count()>1)'] (此错误的背景:http://sqlalche.me/e/e3q8)
@staticmethod
def execute(sql):
conn = engine.connect()
conn.execute(sql)
conn.close()
@staticmethod
def deduplication():
SqlHelper.execute('delete from Proxy_Main where (Proxy_Main.ip,Proxy_Main.port) in (select ip,port from Proxy_Main group by ip,port having count(*) > 1) and rowid not in (select min(rowid) from Proxy_Main group by ip,port having count(*)>1)')
【问题讨论】:
-
您可能需要仔细检查 sqlite 的网站,但我感觉它不支持元组
(a, b) in (select a, b from ...)样式比较...