問題タブ [not-exists]
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.
java - Hibernate を使用して条件付きで挿入する方法はありますか?
更新された値ごとに新しい行を持つテーブルがあります。主キーは、ID とタイムスタンプで構成されます。ステータス欄もあります。特定の ID について、その値が更新されるたびに表す行があり、最新のタイムスタンプを持つ行を使用して「現在の」値を表します。
ユーザー入力に基づいて状態を更新するプロセスがあります。したがって、ユーザーが UI のボタンをクリックすると、新しい状態と新しいユーザー ID で新しい行が作成されます。
2 人のユーザーが同時にボタンをクリックすると、2 つの新しいレコードが挿入され、そのうちの 1 つ (タイムスタンプが最新のもの) が優先されます。2 人のユーザーが同時にこのボタンをクリックし、1 人のユーザーが他のユーザーの状態変更を踏んだことを知らずに新しい行を作成する可能性を回避したいと考えています。Oracle では、次のようなことを行い、行が挿入されたことを確認します (PREVIOUS_KNOWN_MAX_TS は、ユーザーがページを表示したときの「現在の」レコードの TS です)。
ユーザーがページを表示してからユーザーの更新情報が挿入されるまでの間に挿入があった場合、挿入は行われず、ゼロ行が挿入されたことを知ることでそれを検出します。
Hibernate でこれを行う方法はありますか、それとも何らかの SELECT FOR UPDATE を試してみるべきでしょうか?
sql - このクエリは同一ですか? 存在せず、外部結合定式化を残した
孤立した ENI_MONITOR のすべてのレコードを取得したい。ENI_FLUSSI_HUB には、対応するレコードが存在してはなりません。両方の定式化は正しいですか? 左外部結合はどのように考えますか?
php - MySQL-NOTINは望ましくない結果を生成します
以下の表があります。
友達として追加できるすべてのユーザーを取得したい(この場合、のuser_id
に1
はさらに3人の友達を追加する必要があります(2, 3, 5)
。ただし、以下を使用すると、追加できるSQL statement below
ユーザーは1人だけになります。(4)
しかし、これは、追加できるユーザーがいないユーザー4としてログインしたときにうまく機能します。これは私には少し注意が必要です。どんなアイデアでも大歓迎です。
ありがとう
sql - SQL: 存在しない場合は UPDATE、存在しない場合は DELETE
現在、SQL Server データベースに重複を作成することなく、ユーザーの役割を別の役割に変更するスクリプトを作成しようとしています。
例えば:
ユーザーは複数のロールを持つことができます。
ロール Y のすべてのユーザーがロール X のメンバーになり、ロール Y が存在しなくなるように変更したいと思います。
Y ロールをすべて X に更新すると、重複する値が作成される可能性があります。したがって、新しい値がまだ存在しない場合にのみ更新する必要があります。それ以外の場合は、この値を削除するだけです
sql - データベース PGSQL/MSSQL への一意の値の挿入
insert into where not exists を使用して、MSSQL および Postgresql DB に一意のレコードを挿入しようとしています。しかし、以下に示すように、間違った構文エラーが発生します。私は何を間違っていますか?
エラー: [マクロメディア][SQLServer JDBC ドライバー][SQLServer]キーワード 'WHERE' 付近の構文が正しくありません。
mysql - テーブルに存在しない場合、MySQL SELECTフィールドはNULLとして
次のクエリは、0 年の四半期データを取得します。このクエリは、四半期 1、2、および 3 を正常に取得します。
問題:四半期のデータ レコードが存在するかどうかに関係なく、4 つの四半期すべての「結果」を返す必要があります。
望ましい解決策:各四半期の SELECT フィールドに「レコードが存在しない場合は NULL を返す」ように指示したいと思います。このようにして、レコードにデータが存在するかどうかに関係なく、私のテーブルには 4 つの四半期すべての結果が含まれます。
sql - SQL Serverは、一致する有効なレコードを持たないエラーのあるレコードを選択します
テーブルの 1 つに 100,000 件の誤ったレコードがあるという問題があります。これらの誤ったレコードは、主キーが 10 桁ではなく 8 桁しかないため、簡単に識別できます。
私が直面している問題は、2,000 件の有効なレコードに一致する誤ったレコードがあることです (つまり、ある人物には有効な住所レコードと誤った住所レコードがあります)。このため、一致する有効なレコードがないエラーのあるレコードのみを選択したいと考えています。
たとえば、個人の住所レコードには、個人の ID と住所タイプが含まれています。したがって、有効なレコードには1234567HOM
、個人の自宅住所の主キーがあります。エラーのあるレコードには主キーがあります1234567H
(この問題が発生している実際のテーブルはアドレス テーブルではないことを理解してください。情報を保護するためにアドレス テーブルの例を使用しています。)
したがって、次の SQL を使用して、有効なレコードを持つすべてのエラー レコードを選択することができました。
これにより、有効なレコードを持つ 2,000 個のエラー レコードのリストが得られます。ただし、実際に必要なのは、有効なレコードを持たないエラー レコードのリストです。NOT EXISTS
コードに追加して、それらを取得しようとしました:
残念ながら、これは私にまったく記録を提供しません。「AND NOT EXISTS」を「AND EXISTS」に変更すると、不要な 2,000 件のレコードを含む、100,000 件の誤ったレコードがすべて取得されます。
有効なレコードを持たない誤ったレコードをすべて選択する方法を知っている人はいますか?
編集
質問の明確化: エラーのあるレコードと有効なレコードの両方を含む Person_Address テーブルが 1 つだけあります。有効なレコードに対応しない誤ったレコードを見つけたいので、同じ Person_Address テーブルを 2 回選択しています。異なる名前を付けているだけです。
たとえば、John Smith には、1234567HOM (これは有効なレコードです) と 1234567H (これは誤ったレコードです) という 2 つの住所レコードがあります。Judith Roger の有効なレコードは 2222222HOM だけです。Seth Adams には、3333333H という 1 つのエラー レコードしかありません。Seth Adams のレコードのみを取得するクエリを作成したいと考えています。
したがって、John Smith には誤った記録がありますが、彼にも有効な記録があるため、彼の誤った記録を取得したくありません。
sql - SQL の NOT EXISTS 句
私はクエリで立ち往生しており、実行がどのように行われるかを本当に考えることができません。どんな助けも大歓迎です:
クエリは、すべてのプロジェクトで働く従業員の詳細を見つけるために考案されています。
クエリは次のとおりです。
DB 構造は次のとおりです。
列を持つテーブル プロジェクト:
Pname、Pnumber、Plocation、および dnum
列を持つテーブルworks_on:
ESSN、PNO、および営業時間
カラムを持つテーブル Employee :
Fname、minit、Lname、SSN、Bdate、住所、性別、給与、superssn、dno
このクエリがどのように実行されるかを誰かが簡単な言葉で説明できれば、非常に役に立ちます。
sql - NOTEXISTSを使用したパフォーマンス-t-sqlクエリ
この(簡単にするために変更された)クエリは、より大きなクエリの一部であり、日付に他の選択と結合されます。しかし、私はこのセクションを犬のように遅くするように固定しました。ユーザーの各ログインをログに記録するUserLoginHistoryテーブルがあるとします。ユーザーごとに、最初にログインした日付が必要です(クエリの後半で、LogDateでグループ化して、1日に最初にログインした回数を取得します)。
明らかにNOTEXISTS-部分は遅いものです。しかし、同じ仕事をするより効率的なものに置き換える方法がわかりません。
UserLogHistoryカウントが少ない場合、パフォーマンスは問題ありません。それは私が約15000に達するとき、それは遅くなり始めます。たぶん私は毎日の結果を別のテーブルにバッチ処理する必要がありますが、そこに1つあるはずなので、このクエリのより良い解決策を見つけたいと思います...
御時間ありがとうございます!
sql - 存在しないのではなく、結合クエリを残しました
パフォーマンスの低い「存在しないクエリ」があります。したがって、「左結合クエリ」の方がパフォーマンスが向上すると思いますが、そうではありません。これらのクエリを VBA で実行しています。
ここに私の「存在しないクエリ」があります
そして、これは私が同じ結果を達成しようとしている方法ですが、「左結合クエリ」を使用しています
「左結合クエリ」のパフォーマンスが低下するのはなぜですか? もっと速くなると思いました。同じクエリの 3 番目のバージョンがありますが、「not in」を使用しています。クエリは「存在しないクエリ」に非常に似ているため、ここに投稿する必要はないと思います。
より良い/より高速な「左結合クエリ」を提案できる人はいますか???