【发布时间】:2021-01-15 11:11:59
【问题描述】:
我正在尝试在 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)并运行代码,则语法错误会移动到“near”)“”。
如果我删除括号,则语法错误会移动到“靠近“CASE””。
我查看了sqlite3 syntax flowchart,但我不知道如何构造这个查询并且没有遇到语法错误。
感谢您的帮助!
【问题讨论】:
-
...将在我的数据库表中搜索匹配...哪个表?发布示例数据。
标签: python sql sqlite select create-table