如何结合使用sqlite3函数CREATE TABLE AS SELECT,MAX,CASE和AS?

问题描述

我正在尝试在sqlite3中编写一个查询,该查询将在我的数据库表中搜索匹配项,然后根据是否找到匹配项创建一列。

这是我的代码:

import sqlite3
conn = sqlitet3.connect('mydatabase.db')
cur  = conn.cursor()

query = '''
CREATE TABLE test AS SELECT
identifier,MAX(CASE WHEN identifier == "ABC123" THEN 1 ELSE 0 AS id_flag)
'''

cur.execute(query)
print(cur.fetchone())

MAX语句用于折叠重复值。例如,如果有两行具有标识符ABC123,则查询将搜索id_flags的最大值,并仅输出具有该标识符的一行。

因此,我的预期输出(以及用常规SQL编写时的输出)大致如下:

Identifier     id_flag
XYZ234         0
ABC123         1
QRS789         0

这会导致语法错误“ AS附近”。

如果我删除了AS部分(以及之后的id_flag)并运行了代码,则语法错误将移至“)附近”。

如果删除括号,则语法错误将移至“ CASE”附近。

我已经查看了sqlite3 syntax flowchart,但是我不知道如何构造此查询并且不会出现语法错误。

感谢您的帮助!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)