这个SQL语句出了什么问题?我得到了SQLError: near "?": syntax error
。
'select all counts from table as table where offset in ?'
?有一个数字绑定及其中的列表:(1,2,4)
。
答案 0 :(得分:1)
猜测你正在使用的语言是Python ...
无论语言原理是否相同:
您需要动态创建适当数量的占位符。
>>> import sqlite3
>>> conn = sqlite3.connect(':memory:')
>>> c = conn.cursor()
>>> c.execute('create table test (id int)')
<sqlite3.Cursor object at 0x011A96A0>
>>> c.executemany('insert into test values (?)', [(1,),(2,),(4,)])
<sqlite3.Cursor object at 0x011A96A0>
>>> ids = (1,2,4)
>>> query = 'select * from test where id in (%s)' % ','.join('?'*len(ids))
>>> query
'select * from test where id in (?,?,?)'
>>> c.execute(query, ids).fetchall()
[(1,), (2,), (4,)]
答案 1 :(得分:1)
我想你想要'select count(*) from table where offset in ?'
答案 2 :(得分:0)
可以将列表绑定到像这样的单个参数占位符吗?您可以考虑以下替代方法:创建临时表,将列表中的值插入临时表,然后在表和相关列上的临时表之间进行内部联接。总体而言,比使用具有必需数量的问号的(?,?,?,?)子字符串构建查询语句字符串更清晰,更易于维护。