【问题标题】:SQL Select and Delete helpSQL 选择和删除帮助
【发布时间】:2011-04-08 16:59:56
【问题描述】:

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

例如,

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

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

如何使用逗号分隔的列表来使用一个 where 子句选择多个值?

【问题讨论】:

  • 顺便说一句,很棒的用户名。永远不要失去它。

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


【解决方案1】:
select * from table where ID IN(1,2,3,4,5)

【讨论】:

    【解决方案2】:
    select * from table where ID IN (1,2,3,4,5,6)
    

    【讨论】:

      【解决方案3】:

      尝试使用 in 运算符 select * from Table where ID in (1,2,3,4,5,6) 也适用于删除

      【讨论】:

        【解决方案4】:

        你可以试试

        Where ID in (1,2,3)
        

        【讨论】:

          【解决方案5】:

          如果您正在寻找动态查询,那么

          execute('select * from table where ID IN (1,2,3,4,5,6)')

          否则

          select * from table where ID IN (1,2,3,4,5,6)

          会做好的

          【讨论】:

          • 这个答案比其他几个说完全相同的答案要晚很多,并且没有提供任何新的东西。此外,这两个建议的解决方案实际上是相同的 - 两个 sql 语句没有任何区别......
          【解决方案6】:

          【讨论】:

            【解决方案7】:
            SELECT * FROM Table WHERE Id IN (1,2,3,4,5,6)
            

            请注意,您不能在参数化查询中插入整个列表 - 例如,带有包含 '1,2,3,4,5,6' 的参数的 WHERE Id IN (?) 不会产生您想要的结果。

            避免动态构建 SQL 字符串(并可能将自己暴露于SQL Injection)的一个好方法是动态构建参数数量,然后将它们连接到 SQL 中。

            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
            

            【讨论】:

              猜你喜欢
              • 2011-07-28
              • 2011-04-04
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-05-14
              • 1970-01-01
              相关资源
              最近更新 更多