問題タブ [anti-join]
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.
sql - SQL Server で行方不明のメールを見つける
何百万回も行ったことをやろうとしていますが、うまくいきません。だれか理由を教えてもらえますか?
履歴書を送った人のテーブルがあり、そこにはメールアドレスが含まれています...
これらの人々の中に Web サイトにサインアップしていない人がいるかどうかを知りたい. aspnet_Membership テーブルには、Web サイトにサインアップしているすべての人が含まれています。
固有のメール アドレスを持つ 9472 人の求職者がいます。
このクエリは 1793 の結果を生成します。
これは、Web サイトにサインアップしていない人々の電子メールが 7679 (9472-1793) あるはずであることを示唆しています。1793 個の DID が一致したため、残りは一致しないと予想されますが、そのクエリを実行しても何も得られません。
このクエリで何も返されないのはなぜですか???
それがどのように機能しないのかわかりません-基本的には、「jobseekerテーブルにあるが、aspnet_Membershipテーブルにないすべてのメールを表示してください...
sql - 結合されていないレコードを見つけるにはどうすればよいですか?
結合された 2 つのテーブルがあります。
AにはBがたくさんある
通常、次のようにします。
b にレコードがある a からすべてのレコードを取得します。
b に何もない a のレコードだけを取得するにはどうすればよいですか?
oracle - OracleAnti-JoinExecutionプランの質問
次のような2つのテーブルがあります。
に定義されたインデックスがあります
- イベント(ID)(PK)
- ProcessedEvent(event_id、process)
1つ目は、アプリケーションのイベントを表します。
2つ目は、特定のイベントが特定のプロセスによってプロセスを取得したという事実を表しています。特定のイベントを処理する必要のあるプロセスは多数あるため、最初のエントリごとに2番目のテーブルに複数のエントリがあります。
処理が必要なすべてのイベントを見つけるために、次のクエリを実行します。
統計は最新です
ほとんどのイベントが処理されるので、最適な実行プランは次のようになります。
- ProcessedEventインデックスの完全なインデックススキャン
- イベントインデックスのフルインデックススキャン
- 2つの間の反結合
- 残りのテーブルへのアクセス
- フィルター
代わりに、Oracleは次のことを行います
- ProcessedEventインデックスの完全なインデックススキャン
- イベントテーブルの全表スキャン
- イベントテーブルをフィルタリングする
- 2つのセット間のアンチ結合
インデックスのヒントを使用して、Oracleに次のことを実行させます。
- ProcessedEventインデックスの完全なインデックススキャン
- イベントインデックスのフルインデックススキャン
- イベントテーブルのテーブルアクセス
- イベントテーブルをフィルタリングする
- 2つのセット間のアンチ結合
これは本当にばかげた私見です。
だから私の質問は:オラクルが早期のテーブルアクセスを主張する理由は何でしょうか?
追加:パフォーマンスが悪い。Event.IDのみを選択し、必要な行を「手動で」フェッチすることで、パフォーマンスの問題を修正しています。しかしもちろん、それは単なる回避策です。
database - Postgres ANTI-JOINにはテーブルスキャンが必要ですか?
同じテーブルにANTI-JOIN(存在しないSELECT from table ... / left join table WHERE table.id IS NULL)が必要です。実際、存在しない質問を処理するためのインデックスがありますが、クエリプランナーはビットマップヒープスキャンを使用することを選択します。
テーブルには1億行あるため、ヒープスキャンを実行すると混乱します...
Postgresが指標と比較できれば、それは本当に速いでしょう。PostgresはこのANTI-JOINのテーブルにアクセスする必要がありますか?
MVCCにサービスを提供するには、ある時点でテーブルにアクセスする必要があることはわかっていますが、なぜそんなに早いのでしょうか。それ以外の何かを見逃す可能性があるため、存在しないことはテーブルによってのみ修正できますか?
mysql - JOINで別のテーブルから存在しないデータを見つける方法は?
次のような 2 つのテーブル TABLE1 があります。
TABLE2 w/c は次のようになります。
TABLE1
と を比較して、存在しない名前を取得したいTABLE2
。
したがって、基本的には 2 行目を取得する必要があります。w/c には に存在しない NN 名がありTABLE2
、出力は次のようになります。
私はこれを試しましたが、うまくいきません:
そして、それはまだ既存のレコードを取得しています。
mysql - あるテーブルの情報を使用して、その情報が別のテーブルに存在するかどうかを確認する
私は2つのテーブルを持っています:
広告 :
割り当てられた広告:
ご覧のように; 広告 1、2、3 はすべて場所に割り当てられています。必要なのは、テーブルads
に割り当てられていないテーブル内のすべての行を取得するクエリですassigned_ads
sql - 複数のテーブルの複数のフィールドを比較する SELECT ステートメント
2 つの別々のテーブル (テーブル A とテーブル B) が必要です。テーブル A には約 15 の列があり、重要なのは [First Name] と [Last Name] だけです。テーブル B にはさらに多くの列があり、ここでも気になるのは FirstName と LastName だけです (テーブル B のフィールドには、テーブル A のようにスペースが含まれていません)。
どちらも Access にあり、テーブル A にいないテーブル B の人を検索するクエリを作成しようとしています。
テーブル B から First Name + Last Name のエイリアスを作成しようとするのは好きではありませんが、それ以外の場合はどうすればよいかわかりません。
mysql - 3つのテーブルをアドレス指定するMySQLクエリ:AからのいくつがBまたはCにありませんか?
次のタスクを実行するためのMySQLクエリの作成に問題があります。ここで説明した同様のクエリを見たことがありますが、これらはこのクエリとは十分に異なり、転置しようとする試みをスヌーカーします。問題は(かなり)簡単に述べることができます。'members'、'dog_shareoffered'、'dog_sharewanted'の3つのテーブルがあります。メンバーは、売りたいものや買いたいものについて0、1つ以上の広告を持っている可能性があり、詳細は、広告を掲載したメンバーのIDとともに、対応するオファーまたは募集テーブルに保存されます。列'id'はメンバーに固有であり、3つのテーブルすべてに共通です。私が欲しい質問は、どちらのテーブルにも広告を掲載していないメンバーの数を尋ねることです。
私はこれを尋ねるいくつかの方法を試しました。私が得ることができる最も近いものは、クラッシュしないクエリです!(私は決してMySQLの専門家ではありません)。以下は、他の例から収集したものからまとめたものですが、結果がゼロより大きいはずであることがわかっているゼロ行を返します。
このクエリは、私が見た「JOIN」とは異なり、理解しやすいように見えますが、何らかの結合が必要なのではないかと推測していますが、この場合はどのようになりますか?
sql - アイテムが別のテーブルに存在しないかどうかを確認する
私のテーブルは次のように設定されています。
value_searchにエントリがないすべてのプロセス名(それぞれのid_stringを含む)を表示するselectステートメントを作成したいと思います。
プロセステーブルのid_stringはnullにすることができ、それでも名前を付けることができますが、可能であればそれらを除外する必要があります。value_searchのid_stringをnullにすることはできません
どうすればよいですか?
mysql - 他のテーブルにいないときに一方のテーブルからユーザーを選択する
1つのテーブルからユーザーの登録日を選択するクエリがあります。
別のテーブルを結合して元のクエリを変更し、メンバーIDが特定の値を下回り、ACCESSの日付が特定の日付を下回る2番目のテーブル(「アクセス」)にユーザーが存在しないようにする必要があります。
これら2つをまとめる方法がわかりません。