python内对sqlite3数据库表删除某几列相同的行index
在Python中,使用sqlite3
库对SQLite数据库表进行操作时,如果你想删除某几列相同的行,可以使用DELETE FROM
语句结合WHERE
子句。以下是一个例子,假设我们有一个名为my_table
的表,它有col1
, col2
, col3
三个列,我们想删除在col1
和col2
这两列上具有相同值的所有行。
import sqlite3
# 连接到数据库(如果不存在则创建)
conn = sqlite3.connect('my_database.db')
cursor = conn.cursor()
# 创建表
cursor.execute('''
CREATE TABLE IF NOT EXISTS my_table (
id INTEGER PRIMARY KEY,
col1 TEXT,
col2 TEXT,
col3 TEXT
)
''')
# 插入示例数据
cursor.execute('''
INSERT INTO my_table (col1, col2, col3) VALUES
('value1', 'value2', 'value3'),
('value4', 'value5', 'value6'),
('value1', 'value2', 'value7'),
('value8', 'value9', 'value10')
''')
# 删除col1和col2上有相同值的行
cursor.execute('''
DELETE FROM my_table
WHERE (col1, col2) IN (
SELECT col1, col2 FROM my_table
GROUP BY col1, col2
HAVING COUNT(*) > 1
)
''')
# 提交更改并关闭连接
conn.commit()
conn.close()
在这个例子中,我们首先创建了一个名为my_table
的表(如果尚不存在),并插入了一些示例数据。然后,我们执行了一个DELETE
语句,它删除了在col1
和col2
上有相同值的所有行。我们使用子查询找出那些有相同值的col1
和col2
的组合,然后删除这些组合对应的所有行。
评论已关闭