2017-01-31 53 views
-1
myConnection = mysql.connector.connect(user = 'myuser', password = 'mypass', host = 'localhost', database = 'mydatabase') 

# Cursor for the connection 
myCursor = myConnection.cursor() 

# Assume namecolumn is a valid column... 
myQuery = "SELECT * FROM mytable WHERE name = Erik" 
myCursor.execute(myQuery) 

# Now here, do another SELECT, but only on the results that are in myCursor 

因此,可以說你有一個名爲'mytable'的表。這個表格還有一個名爲'name'的列。我們還可以說,有多個名字爲'erik'的人爲'name'列。對於Python/MySQL,你如何對先前的結果執行SELECT查詢?

我在問什麼是在做第一個SELECT查詢之後,是否可以做另一個SELECT查詢,但是隻能對第一個查詢的現有結果進行操作?如果這是可能的,怎麼樣?基本上,我只是想使用SELECT重複篩選結果。

謝謝。

+0

所以你想對你的第一個查詢的結果運行相同的確切查詢? –

+0

假設有一個更好的方法來提出一個問題http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-tobe -a-very-simple-sql-query – Strawberry

+0

我認爲你真正想要做的是在一個集合上運行多個過濾器,而不是運行select來反覆在更小和更小的結果上運行。只需將'and'和/或'or'語句添加到您的'SELECT'子句 – mmenschig

回答

0

將「and ...」添加到原始查詢中,或者從第一個查詢創建一個id列表,並選擇「where id in(...)」,其中...是由逗號分隔的由第一個查詢。

+0

,我總是問自己。逗號分隔列表何時變得太大而無法在「where ID in(...)'過濾器中使用?有最大值嗎? – mmenschig

+0

如果有一個硬編碼的限制,我從來沒有遇到它。它不是特別快速或高效,但它使用與部分查詢返回的大量結果集相同的內部結構,因此它不應該成爲問題。 – Mike

0

也許在WHERE子句中嘗試多個條件?

SELECT * FROM mytable WHERE name = 'Erik' AND born = 1990 
0

這是你所需要的?

myQuery = "SELECT * 
      FROM mytable 
      WHERE name = 'Erik' 
      AND id in (SELECT DISTINCT id 
         FROM mytable)" 

獲得不同id或者定居在任何其他列,這樣你可以避免爲同一人的多條記錄將篩選記錄。鑑於你的問題有點模糊,很難給出具體的答案。

相關問題