Python 使用SQLite基于列值复制行
使用SQLite,我需要将输入文件转换为输出文件,其中的行应该根据count列中的值进行复制 表格格式如下:Python 使用SQLite基于列值复制行,python,sqlite,Python,Sqlite,使用SQLite,我需要将输入文件转换为输出文件,其中的行应该根据count列中的值进行复制 表格格式如下: # creating input database input_file = """ CREATE TABLE input_file ( dateid date NOT NULL , groupid NOT NULL, result INT NOT NULL, result_count INT NOT
# creating input database
input_file = """
CREATE TABLE input_file (
dateid date NOT NULL ,
groupid NOT NULL,
result INT NOT NULL,
result_count INT NOT NULL
)
"""
# fresh table
cursor.execute("DROP TABLE IF EXISTS input_file")
cursor.execute(input_file)
我对SQL相当陌生,所以我需要关于使用哪些代码的帮助。下面是我正在看的前后两张照片
如果与另一个具有多个匹配行的表联接,则可以重复执行SELECT时输出的行。这只有在计数相对较小的情况下才可行。创建一个包含重复计数列的新表,该列包含1、2、2、3等。然后您可以:
SELECT * FROM input_file JOIN repeats ON result_count = repeat_count
您可以使用递归CTE执行此操作:
WITH cte AS (
SELECT dateid, groupid, result, result_count, 1 counter
FROM input_file
UNION ALL
SELECT dateid, groupid, result, result_count, counter + 1
FROM cte
WHERE counter < result_count
)
SELECT dateid, groupid, result
FROM cte
然后插入行:
WITH cte AS (
SELECT dateid, groupid, result, result_count, 1 counter
FROM input_file
UNION ALL
SELECT dateid, groupid, result, result_count, counter + 1
FROM cte
WHERE counter < result_count
)
INSERT INTO output_file(dateid, groupid, result)
SELECT dateid, groupid, result
FROM cte
请参阅。谢谢标记。我已经编辑了我的问题以获取更多信息。你说另一个表有多个匹配行是什么意思?@Lara如果我的解释不清楚,我很抱歉。我的意思是一个包含一行值为1的表,两行值为2的表,等等。我现在可以看到,通过你所做的编辑,我的方法对你来说不实用。哦,好的,明白了。是的,如果我有大量的复制值要求,可能不可行。谢谢你
WITH cte AS (
SELECT dateid, groupid, result, result_count, 1 counter
FROM input_file
UNION ALL
SELECT dateid, groupid, result, result_count, counter + 1
FROM cte
WHERE counter < result_count
)
INSERT INTO output_file(dateid, groupid, result)
SELECT dateid, groupid, result
FROM cte