SQL选择和删除帮助

时间:2011-04-08 16:59:57

标签: sql sql-server sql-server-2005 syntax

如何从表中选择或删除特定的数字列表?

例如,

从表中选择*,其中ID = 1,2,3,4,5,6

不起作用。我必须做ID = 1或ID = 2或ID = 3等等

如何使用逗号描述列表使用一个where子句选择多个值?

7 个答案:

答案 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)

答案 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