这是我的桌子test_table
id名
1 aa
2 bb
3 cc
当它与python3一起运行时,我收到消息:
mysql.connector.errors.ProgrammingError: 1064 (42000):您的SQL语法出现了错误;请检查与MySQL服务器版本对应的手册,以便在第1行使用接近“test(从test_table中选择*)选择名称”的语法。
这是我的语法:
cnxn = mysql.connector.connect(**sql_config)
cursor = cnxn.cursor()
query = """
with test as(SELECT * FROM `test_table`)
SELECT * FROM test
"""
cursor.execute(query)
get_data = cursor.fetchall()
cnxn.close()
cursor.close()错误可能在查询.的语法中。
因为我尝试了以下两个没有错误的方法:
1.续集Ace:使用“with”
with `test` as ( SELECT * FROM `test_table`)
SELECT `name` FROM `test`2.python3 3:不使用“with”,而且可以工作
query = """
SELECT name FROM test_table
"""如何修改语法的“with as”?
query = """
with test as(SELECT * FROM test_table)
SELECT * FROM test
"""发布于 2022-08-11 10:51:11
我几乎可以肯定,您使用的是mysql的旧版本。通用表表达式特性(带有" with ")仅在版本8中引入。
以下的每一个版本都会返回完全相同的错误消息。见第一个小提琴
相同的查询从版本8开始运行非常完美,就像您在第二个小提琴例子上看到的那样
但这还没有结束。可以用如下所示的子查询替换CTE
SELECT name FROM (select 'XXX' name) q;或者,如果你需要加入:
select x.name
FROM (select 'XXX' name) x
JOIN (select 'XXX' name union all select 'YYY') y
ON x.name = y.name;正如你在小提琴例子上看到的
https://stackoverflow.com/questions/73318242
复制相似问题