問題タブ [sql-except]
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 - 他の2つのテーブルに存在することを除いて
テーブル product からすべての値を取得する必要がありますが、他の 2 つのテーブル製品に存在する場合を除きます。このクエリは、2 つの EXCEPTS を使用して受け入れられますか? これは別の方法で行う必要があります。
sql - 指定されたデータセットで 2 つの select ステートメントが同じ結果を返すかどうかを確認します
問題を解決するために上記のクエリに出くわしました。私は postgres 9.4 でいくつかの試行を行いました。これが私の結果です。
1マイナスはサポートされていないため、EXCEPT を使用する必要があります
[2] EXCEPT のみを使用すると重複が考慮されないため、EXCEPT ALL を使用する必要がありました
[3] EXCEPT ALL では、結果の列の順序が同じである必要があるため、上記のクエリQUERY1
でQUERY2
同じ列の順序を返すか、クエリをラップして列の順序が同じであることを確認する必要があります (アプリケーションで発生する可能性があります)。論理)
したがって、上記の 3 点を念頭に置いておけば、結果について 100% 確信が持てますよね?
注: 上記の 3 点については、質問への回答でも言及しました。こちらで確認したので質問させていただきました
sql - SQL、2 つのテーブルを個別の値のみで結合 (行全体ではなく、3 つのフィールドのみに基づく)
アプリケーション、オーディオ、ビデオの 3 つのテーブルを結合しようとしています。それらはすべて同じスキーマを持っていますが、オーディオとビデオには「重複」があります。ビデオのエントリは常にオーディオにも表示されます。行全体が重複しているのではなく、3 つのフィールドに基づいているため、重複を引用符で囲みます。
オーディオテーブル
ビデオテーブル
アプリケーション表
そして、重複がある場合にビデオからのデータを保持する 1 つのテーブルにそれらを結合したいので、ビデオ テーブルからの品質とコールタイプで、ジョンが 1 回だけ表示されることがわかります。
EXCEPT と UNION を使用して、ビデオに表示されないオーディオのすべての行を選択してからビデオに結合しようとしていましたが、calltype が常に異なり、品質が異なる可能性があるため、それらが一意であると見なされているためです。
mysql - EXCEPT コマンド - すべてのボートを予約した船員を見つける
私は教科書を読んでいますが、次のクエリがわかりません: すべてのボートを予約した船員を見つけてください。
- 3 つのテーブルがあります。
- 船員: sid、sname、評価、年齢 (プライマリ: sid)
- ボート: 入札 (プライマリ: 入札)
- Reserves: sid、bid、day (primary、sid、bid、day) (sid は船員の外部キー、bid はボートの外部キー)
すべてのボートを予約した船員を検索するというクエリの場合、与えられた答えは次のとおりです。
私の質問は次のとおりです。
上記のクエリに何か問題がありますか? それをMySQL Workbenchに入れると、EXCEPTで構文エラーがあることが示されます
上記の本で与えられた解決策のほかに、クエリを実行する他の方法はありますか: すべてのボートを予約した船員を見つける
ありがとうございました、
sql - 2 つのバッファーの違い
ラインの周りに 100m のバッファーを作成したいと考えています。しかし、最初の 20m バッファーを選択したくありません。私はこのようなことを試しました:
しかし、QGISでチェックした後、うまくいきませんでした。これを解決するにはどうすればよいですか?
sql - パフォーマンスのある SQL で「Except」に代替
MS-SqlのようにテーブルTableAがあります
シナリオは、いくつかの TrId のステータスが 0 だけでなく 3 であり、一部は 3 のみ、一部は 0 のみです。ステータスが 3 のみの TrId を見つける必要があります。
その方法の 1 つは次のとおりです。
1億件を超えるレコードがあり、例外として十分な時間枠がありません。これに代わるものがあるとありがたいです。
performance - Redshift EXCEPT は LEFT JOIN よりもはるかに遅い
ステージング テーブル (「新しいデータ」) を別のテーブル (「既存のデータ」) と比較して、追加/変更/削除された行、および最終的にアップサートを識別しようとしています。これはコストのかかる操作です。大規模なデータセットでの完全な差分です。構文を明確にするためにコマンドを使用したかったのEXCEPT
ですが、パフォーマンスに深刻な問題があり、 a のLEFT JOIN
方がはるかに優れていることがわかりました。
2 つのテーブルの行数はほぼ同じで、スキーマも同じです (ほとんどの場合、「2 番目の」テーブルには追加のcreated_date
列があります)。
どちらも共有distkey(date)
し、sortkey(date, id1, id2)
; EXCEPT
オプティマイザーを支援するために、ステートメント内で「正しい」順序で列を指定しています。
テスト サイズのデータのサブセットに対するそれぞれのクエリ プランを以下に示します。
私のはるかに醜いものと比較してくださいLEFT JOIN
クエリのコストは1000003266822.61
vs68706795.68
です。クエリ間で比較することは想定されていませんが、実行時間で証明されています。ステートメントがhereEXCEPT
よりもはるかに遅い理由は何ですか?LEFT JOIN