2017-01-31 3 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」というテーブルがあるとします。このテーブルには、「名前」という列もあります。また、 '名前'列には 'erik'という名前の複数の人がいると言います。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-to-be -a-very-simple-sql-query – Strawberry

+0

私はあなたが本当にやりたいことは、selectを実行してより小さい結果を繰り返し実行するのではなく、1つのセットで複数のフィルタを実行することだと思います。 'SELECT'節に' and'や 'or'文を追加してください。 – mmenschig

答えて

0

元のクエリに "and ..."を追加するか、最初のIDからリストのIDを作成し、 "where id in(...)"を選択します。ここで、...はカンマで区切られたIDのカンマ区切りリストです。最初のクエリ

+0

私はいつも自分自身に尋ねたことがあります。カンマで区切られたリストが大きすぎて '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またはあなたが同じ人のために複数のレコードを避けるように、レコードをフィルタします上の和解他のどんな列。あなたの質問が少し漠然としているので、具体的な答えを出すのは難しいです。

関連する問題