タグ付けされた質問 「where-in」

21
配列をIN()条件にバインドできますか?
PDOを使用して値の配列をプレースホルダーにバインドできるかどうか知りたいです。ここでの使用例は、IN()条件で使用する値の配列を渡そうとしています。 私はこのようなことができるようになりたいです: <?php $ids=array(1,2,3,7,8,9); $db = new PDO(...); $stmt = $db->prepare( 'SELECT * FROM table WHERE id IN(:an_array)' ); $stmt->bindParam('an_array',$ids); $stmt->execute(); ?> そして、PDOにバインドして、配列内のすべての値を引用します。 現在私はやっています: <?php $ids = array(1,2,3,7,8,9); $db = new PDO(...); foreach($ids as &$val) $val=$db->quote($val); //iterate through array and quote $in = implode(',',$ids); //create comma separated list $stmt = …

10
MySQL-SELECT WHEREフィールドIN(サブクエリ)-非常に遅いのはなぜですか?
検査したいデータベースに重複がいくつかあるので、どの重複を確認するために私はこれを行いました: SELECT relevant_field FROM some_table GROUP BY relevant_field HAVING COUNT(*) > 1 このようにして、related_fieldが複数回出現するすべての行を取得します。このクエリの実行には数ミリ秒かかります。 ここで、重複のそれぞれを検査したかったので、上記のクエリで関連するフィールドを使用してsome_tableの各行をSELECTできると思ったので、次のようにしました。 SELECT * FROM some_table WHERE relevant_field IN ( SELECT relevant_field FROM some_table GROUP BY relevant_field HAVING COUNT(*) > 1 ) これは、何らかの理由で非常に遅いことがわかります(数分かかります)。それをそんなに遅くするためにここで正確に何が起こっているのですか?関連フィールドにはインデックスが付けられています。 最終的に、最初のクエリからビュー "temp_view"を作成してから、(SELECT relevant_field FROM some_table GROUP BY relevant_field HAVING COUNT(*) > 1)代わりに次のように2番目のクエリを作成しました。 SELECT * FROM …
133 mysql  subquery  where-in 

3
Python / psycopg2 WHEREINステートメント
SQLステートメントの%sを介してリスト(countryList)を使用できるようにする正しい方法は何ですか? # using psycopg2 countryList=['UK','France'] sql='SELECT * from countries WHERE country IN (%s)' data=[countryList] cur.execute(sql,data) 現在のように、「WHERE country in(ARRAY [...])」を実行しようとするとエラーが発生します。文字列操作以外にこれを行う方法はありますか? ありがとう
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.