如何从表中选择或删除特定的数字列表?
例如,
从表中选择*,其中ID = 1,2,3,4,5,6
不起作用。我必须做ID = 1或ID = 2或ID = 3等等
如何使用逗号描述列表使用一个where子句选择多个值?
答案 0 :(得分:2)
select * from table where ID IN(1,2,3,4,5)
答案 1 :(得分:2)
select * from table where ID IN (1,2,3,4,5,6)
答案 2 :(得分:0)
尝试使用in运算符select * from Table where ID in(1,2,3,4,5,6) 也适用于删除
答案 3 :(得分:0)
SELECT * FROM myTable WHERE id BETWEEN 1 AND 6
http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#operator_between
答案 4 :(得分:0)
你可以试试
Where ID in (1,2,3)
答案 5 :(得分:0)
如果您正在寻找动态查询,那么
执行('select * from table where ID IN(1,2,3,4,5,6)')
,否则
从ID IN(1,2,3,4,5,6)
的表中选择*将完成这项工作
答案 6 :(得分:0)
SELECT * FROM Table WHERE Id IN (1,2,3,4,5,6)
请注意,您无法在参数化查询中插入整个列表 - 例如,带有WHERE Id IN (?)
参数的'1,2,3,4,5,6'
不会产生您所追求的结果。
避免动态构建SQL字符串(并可能将自己暴露给SQL Injection)的一种好方法是动态构建参数的数量,然后将它们连接到SQL中。< / p>
Python和SQLite的完整示例(尽管此方法可用于任何SQL数据库引擎的语言):
ids = [1, 2, 3, 4, 5, 6]
params = tuple(ids) # because sqlite wants the parameters in tuple format
paramstring = ', '.join(['?' for dummyp in ids])
# paramstring now contains '?, ?, ?, ?, ?, ?'
# - the same number of '?' as the number of ids
sql = 'SELECT * FROM Table WHERE Id IN (' + paramstring + ')'
# sql now contains 'SELECT * FROM Table WHERE Id IN (?, ?, ?, ?, ?, ?)'
conn = sqlite3.connect(':memory:')
cursor = conn.execute(sql, params)
# You can now iterate through the cursor to get your data