2011-04-08 46 views
0

如何從表中選擇或刪除特定數字列表?SQL選擇和刪除幫助

例如,

SELECT * FROM表,其中ID = 1,2,3,4,5,6

不起作用。我將不得不做的地方ID = 1或ID = 2或ID = 3等等

你如何使用逗號描述列表來選擇多個值使用where where子句?

+1

順便提一下,awwesome用戶名。永遠不要失去它。 – SquidScareMe 2011-04-08 17:02:23

回答

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

嘗試在操作使用SELECT * FROM表在哪裏(1,2,3,4,5,6) 作品與刪除過

0

i F你正在尋找動態查詢,然後

執行( 'SELECT * from表where ID IN(1,2,3,4,5,6)')

否則

SELECT * FROM表其中ID IN(1,2,3,4,5,6)

將做的工作

+0

爲什麼downvote? – 2011-04-08 20:54:39

+0

這個答案比其他幾個說得完全一樣的東西晚了很多,並沒有提供任何新的東西。此外,這兩個建議的解決方案實際上是相同的 - 這兩個sql語句中沒有任何區別...... – 2011-04-09 09:41:50

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。

與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