問題タブ [where-in]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
735 参照

mysql - MySQL where-in サブクエリが 1 行のみを返す

私は2つのテーブルコースと学生を持っています

たとえば、学生にはフィールドがあります: idfirst_name データ付き

たとえば、コースにはidと学生の2つのフィールドがあります

データあり:

id . . . . . . . . 1. . . . . . 2

学生 。. . 1,2,5。. . .3,4,6,7

コース1の学生の名前を見つけたいとしましょう

SELECT students FROM courses c WHERE c.id = 1;

予想通り1,2,5が得られます

また

SELECT @students := students FROM courses c WHERE c.id =1;

予想通り1,2,5が得られます

SELECT s.first_name FROM students s WHERE s.id IN (1,2,5);

予想通り、Andrew、Brian Eric が生成されます

SET @students := students FROM courses c WHERE c.id =1; @生徒を選択;`

1、2、5が得られます

私は期待するだろう

SET @students := students FROM courses c WHERE c.id =1; SELECT s.first_name FROM students s WHERE s.id IN (@students);

アンドリュー、ブライアン・エリックを産む

ただし、最初の名前のみが返されます: アンドリュー

別の course_student ルックアップ テーブルを作成できる/作成する必要があることは十分承知していますが、期待した結果が得られない理由を理解したいと思っています。

どこが間違っていますか?

0 投票する
1 に答える
2715 参照

mysql - WHERE-IN または FIND_IN_SET

正規化されていないデータベースには、バッチという名前のテーブルがあります

テーブル batches には、複数の ID を持つフィールド student_ids があります。例えば1311, 1319, 1400

From: SELECT student_ids FROM バッチ WHERE 1311 IN(student_ids)

Student_id を取得します。1311, 1319, 1400

そして: SELECT student_ids FROM batches WHERE 1319 IN(1311, 1319, 1400)

正常に動作します:1311, 1319, 1400

しかし

SELECT student_ids FROM バッチ WHERE 1319 IN(student_ids)

また

SELECT @student_ids := Student_ids FROM バッチ b; SELECT Student_ids FROM バッチ WHERE FIND_IN_SET(1319, @student_ids)

戻り値Null

私は何が欠けていますか?最初の結果を配列に変換する必要があると思いますが、どうすればよいでしょうか?

私はDashの提案を試しました(Dashに感謝します)が、まだ問題があります

SELECT id FROM batches WHERE INSTR(','+1319+',', ','+CAST(student_ids AS CHAR) + ',') も試しました

Matt Ellen が別の投稿で提案したように - 最初の項目が一致する場合にのみ機能します

0 投票する
3 に答える
423 参照

mysql - MySQL: RANGE クエリでの ORDER BY、パフォーマンスの低下

400,000 を超えるレコードを含むMyIsamテーブルから、定義されたユーザーのリストによって送信された最後の 20 件の投稿を選択する必要があるクエリに取り組んでいます。唯一の問題は、クエリが約0.6秒で実行され、場合によっては 2 秒以上かかることです。

ORDER BYクエリを削除すると、はるかに高速になり、"post_author" 列で正しいインデックスが使用され、代わりに完全なテーブル スキャンが実行されます...このようなクエリを作成する最良の方法は何ですか?


author_index を使用したテスト #1

  • プライマリ(post_id)
  • author_index (post_author)

時間: 0.7 秒 多くの著者とともに説明する

時間: 0.004 秒 少数の著者で説明する


複合インデックスを使用したテスト #2

  • プライマリ(post_id)
  • view_posts_index (post_id, post_author)

時間: 0.05 秒 多くの著者とともに説明する

時間: 1.5 秒 少数の著者で説明する


複合インデックスと author_index を使用したテスト #3

  • プライマリ(post_id)
  • view_posts_index (post_id, post_author)
  • author_index (post_author)

時間: 0.7 秒 多くの著者とともに説明する

時間: 0.0037 秒 少数の著者で説明する


ご協力いただきありがとうございます。

0 投票する
3 に答える
380 参照

mysql - mysql-複数の文字列のすべてのインスタンスの数

たとえば絞り染めのTシャツのテーブルがあるとしましょう...一部のシャツには複数の色があり、文字列としてコンマで区切られてリストされています。blue,yellow,red,purpleまたはなどgreen,white,black,red

各色が何回存在するかをカウントするために、1つのクエリを実行したいと思います。どの「色」が列に存在するかを事前に知っています。

私が今しているのは、「色」ごとに個別のクエリです。

等.....

15の異なるクエリよりも効率的な方法はありますか?

例:テーブルに""の列'color'の値がblue, red, yellowあり、別の行がcolor=" red, green, yellow"などになる場合...

次を返すクエリを探しています:

0 投票する
4 に答える
418 参照

sql - 「IN」句の要素数が増えると、SQL のパフォーマンスは低下しますか?

こんなお問い合わせがあり、

データベースには何百万もの顧客が存在する可能性があります。このクエリの効率に問題はありますか? IN ステートメント内の Id の数が多い場合は? もしそうなら、その理由と回避策は?

私はSQLServerを使用しています。以下は私のテーブル構造です

Id は主キー - 非クラスター化インデックスです。

0 投票する
2 に答える
1577 参照

ruby-on-rails - Rails where In が認識しない場所

undefined method whereこれらのパラメーターを使用して以下のコードを実行すると、エラーが発生し続けます。

誰かが私が間違っていることを見ることができますか?

ありがとう

0 投票する
2 に答える
7601 参照

sql - CouchDBでWHERE-INクエリを実行する

CouchDBを1回呼び出すだけで、特定のドキュメントのリストを照会したいと思います。

SQLで私は次のようなことをします

CouchDBで、_idまたは別のフィールドでこれを行うためのレシピは何ですか?

0 投票する
2 に答える
19294 参照

postgresql - PostgreSQL: WHERE IN と NOT WHERE IN

フィールド によって参照される とAの2 つのテーブルがあるため、 に存在する任意の値が.BABA.id_b B.idid_bB.id

3 つのクエリがあります。

それは私に与えます0;

2 つ目、違いはNOT:

このクエリは私に与えます:1899

三つ目:

そして、このクエリは私に3599

同じ結果:

2つのセットに分割することを保証B.idし、両方のセットの要素の数は合計要素数よりも多くなければなりませんが、私は1899 + 0 != 3599を持っています。

それはどうしてですか?

0 投票する
1 に答える
2734 参照

sqlite - "WHERE IN" (または AND、OR ステートメント) のネスト SQLite

user1 と user2 の 8 つの特定の組み合わせを取得する SELECT クエリが必要です (user2 と user1 の組み合わせも持つ価値があり、冗長ではありません)。「IN」ステートメントは価値があるように見えました。

直接関連する質問。1. "WHERE IN" ステートメントをネストできますか?

  1. そうでない場合、指定できるようにクエリを最も効果的/最も簡単に構造化するにはどうすればよいですか (user1 と user2 が位置を切り替える 4 つのペアの場合 - 8 つの組み合わせ): (where user1 = billy AND user2 = sue) OR (where user1 = sue AND user2 =billy) OR (user1 = jack AND user2 = jill) OR (user1 = jill AND user2 = jack)...etc ?

[この時点で、クエリを実行して関連情報を grep する方が簡単に思えます。]

現在の考え:

これを使用しましたが、関係のないデータが表示されます。

0 投票する
4 に答える
4899 参照

sql - ここで、SQL Serverクエリの更新番号は、あるフィールドから別のフィールドにリストされています

私はSQLServerを使用していますが、以下のクエリで懸念があります。リスト内の場所を実行すると、左側のフィールドが右側のフィールド(同じテーブルからのもの)で更新されるかどうかはわかりません。

等々...

リストの最初の番号を取り、フィールド値の設定に対処してから、リストの次の番号に移動すると思います。

私の期待は正しいですか?

前もって感謝します。