目次
1. テーブルとテーブルを比較してください
演習

SQLを使用した設定操作

Jun 04, 2018 am 09:29 AM
手術 行為 集める

この記事では主に、特定の参考値を持つ SQL の使用方法を紹介します。必要な友達はそれを参照してください

1. テーブルとテーブルを比較してください


。 2 つのテーブルの違いを直接尋ねます

drop table if exists tbl_a;create table tbl_a(
key1 varchar(10),
col_1 int4,
col_2 int4,
col_3 int4
);insert into tbl_a values('A', 2, 3, 4);
insert into tbl_a values('B', 0, 7, 9);
insert into tbl_a values('c', 5, 1, 6);
drop table if exists tbl_b;create table tbl_b(
key1 varchar(10),
col_1 int4,
col_2 int4,
col_3 int4
);
insert into tbl_b values('A', 2, 3, 4);
insert into tbl_b values('B', 0, 7, 9);
insert into tbl_b values('c', 5, 1, 6);-- ## 如果union a b 行数一致则两张表相等 select count(1) row_cnt  from ( select * 
           from tbl_A           union 
          select *            from tbl_b
        ) tmp
;
ログイン後にコピー
2. 差分セットを使用してリレーショナル除算演算を実装します

テーブルを構築します

(select * from tbl_a except
 select * from tbl_b) union all
 (select * from tbl_b  except
  select * from tbl_a);
ログイン後にコピー
drop table if exists skills;create table skills(
skill varchar(10)
);insert into skills values('oracle');
insert into skills values('unix');insert into skills values('java');drop table if exists empskills;create table empskills(
emp varchar(10),
skill varchar(10)
);insert into empskills values('相田','oracle');
insert into empskills values('相田','unix');
insert into empskills values('相田','java');
insert into empskills values('相田','c#');
insert into empskills values('神奇','oracle');
insert into empskills values('神奇','unix');
insert into empskills values('神奇','java');
insert into empskills values('平井','oracle');
insert into empskills values('平井','unix');
insert into empskills values('平井','PHP');
insert into empskills values('平井','Perl');
insert into empskills values('平井','C++');
insert into empskills values('若田部','Perl');
insert into empskills values('度来','oracle');
ログイン後にコピー
3. 等しいサブセットを見つけます

--把除法变成减法select distinct emp  from empskills es1 where not exists
        (select skill from skills
         expect         select skill from empskills es2          where es1.emp = es2.emp);
ログイン後にコピー

アイデア: 両メーカーとも同じ種類の部品を扱っています(部品欄に従って接続するだけです) 2 つのサプライヤーからの部品タイプの数は同じです (つまり、1 対 1 のマッピングがあります) (カウント制限)

drop table if exists supparts;create table supparts(
sup varchar(10),
part varchar(10)
);insert into supparts values('A', '螺丝');
insert into supparts values('A', '螺母');
insert into supparts values('A', '管子');
insert into supparts values('B', '螺丝');
insert into supparts values('B', '管子');
insert into supparts values('C', '螺丝');
insert into supparts values('C', '螺母');
insert into supparts values('C', '管子');
insert into supparts values('D', '螺丝');
insert into supparts values('D', '管子');
insert into supparts values('E','保险丝');
insert into supparts values('E', '螺母');
insert into supparts values('E', '管子');
insert into supparts values('F','保险丝');
ログイン後にコピー

4. 重複する行を削除します

select a.sup s1, b.sup s2  from supparts a, supparts b where a.sup < b.sup                       -- 生成供应商的全部组合 
   and a.part = b.part                     -- 条件1:经营同种类型的零件 
 group by a.sup, b.suphaving count(*) = (select count(1)         -- 条件2:经营的零件的数量种类相同 a = 中间数                     from supparts c                    where c.sup = a.sup)   and count(*) = (select count(1)         -- 条件2:经营的零件的数量种类相同 b = 中间数                     from supparts d                    where d.sup = b.sup)
;
ログイン後にコピー

演習

drop table if exists products;create table products(
rowid int4,
name1 varchar(10),
price int4
);insert into products values(1,&#39;苹果&#39;,50);insert into products values(2,&#39;橘子&#39;,100);
insert into products values(3,&#39;橘子&#39;,100);insert into products values(4,&#39;橘子&#39;,100);
insert into products values(5,&#39;香蕉&#39;,80);-- 删除重行高效SQL语句(1):通过EXCEPT求补集delete from productswhere rowid  in (select rowid           -- 全部rowid                   from products 
                 except                 -- 减去                 select max(rowid)      -- 要留下的rowid                   from products                  group by name1, price
                  );-- 删除重行高效SQL语句(2):通过not indelete from products where rowid not in (select max(rowid)                      from products                     group by name1, price
                    );
ログイン後にコピー

コンテンツの大部分「SQL Advanced Textbook」から出てきたのでメモしておきます。演習内のコードの一部はオリジナルです。

以上がSQLを使用した設定操作の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Go 言語でコレクションのような関数を実装するのはなぜ難しいのでしょうか? Go 言語でコレクションのような関数を実装するのはなぜ難しいのでしょうか? Mar 24, 2024 am 11:57 AM

Go 言語ではコレクションのような関数を実装するのが難しく、多くの開発者を悩ませている問題です。 Python や Java などの他のプログラミング言語と比較して、Go 言語には set や map などの組み込みのコレクション型が存在しないため、コレクション関数を実装する際に開発者にいくつかの課題が生じます。まず、コレクションのような機能を Go 言語で直接実装することがなぜ難しいのかを見てみましょう。 Go 言語で最も一般的に使用されるデータ構造はスライスとマップであり、コレクションのような関数を完成させることができますが、

Java コレクションのソートパフォーマンスを最適化する方法 Java コレクションのソートパフォーマンスを最適化する方法 Jun 30, 2023 am 10:43 AM

Java は、さまざまな種類のソフトウェア開発で広く使用されている強力なプログラミング言語です。 Java 開発では、コレクションの並べ替えを伴うシナリオが頻繁に含まれます。ただし、コレクションソートの性能最適化を行わないと、プログラムの実行効率が低下する可能性があります。この記事では、Java コレクションの並べ替えのパフォーマンスを最適化する方法について説明します。 1. 適切なコレクション クラスの選択 Java には、ArrayList、LinkedList、TreeSet など、並べ替えに使用できるコレクション クラスが多数あります。さまざまなコレクションクラスが含まれています

HashSet クラスの addAll() メソッドを使用して、あるコレクションから別のコレクションにすべての要素を追加します。 HashSet クラスの addAll() メソッドを使用して、あるコレクションから別のコレクションにすべての要素を追加します。 Jul 24, 2023 am 08:58 AM

HashSet クラスの addAll() メソッドを使用して、コレクション内のすべての要素を別のコレクションに追加します。HashSet は、Java コレクション フレームワークの実装クラスです。AbstractSet を継承し、Set インターフェイスを実装します。 HashSet はハッシュ テーブルに基づく順序なしのセットであり、要素の重複は許可されません。これには、コレクション内の要素を操作するためによく使用されるメソッドが多数用意されており、その 1 つが addAll() メソッドです。 addAll() メソッドの機能は、指定されたものを追加することです。

Oracleデータベース操作スキル:減算演算を詳しく解説 Oracleデータベース操作スキル:減算演算を詳しく解説 Mar 02, 2024 pm 06:15 PM

Oracle データベースは、強力なリレーショナル データベース管理システムとして、ユーザーのニーズを満たす豊富なコンピューティング操作を提供します。日々のデータベース操作において、減算演算は一般的かつ重要な演算であり、必要な結果を得るためにデータの減算演算を実現するのに役立ちます。この記事では、Oracle データベースでの減算演算に関連する手法について詳しく説明し、読者がこの関数をよりよく理解して使用できるように、具体的なコード例を示します。 1. Oracle データにおける減算演算の基本概念

Laravel コレクションの Where メソッドの実践ガイド Laravel コレクションの Where メソッドの実践ガイド Mar 10, 2024 pm 04:36 PM

Laravel コレクションの Where メソッドに関する実践ガイド Laravel フレームワークの開発中、コレクションは、データを操作するための豊富なメソッドを提供する非常に便利なデータ構造です。中でも、Where メソッドは、指定した条件に基づいてコレクション内の要素をフィルタリングできる、一般的に使用されるフィルタリング メソッドです。この記事では、Laravel コレクションでの Where メソッドの使用法を紹介し、特定のコード例を通じてその使用法を示します。 1. Whereメソッドの基本的な使い方

C# における一般的な同時コレクションとスレッド セーフティの問題 C# における一般的な同時コレクションとスレッド セーフティの問題 Oct 09, 2023 pm 10:49 PM

C# における一般的な同時コレクションとスレッド セーフティの問題 C# プログラミングでは、同時操作の処理は非常に一般的な要件です。スレッド セーフティの問題は、複数のスレッドが同時に同じデータにアクセスして変更する場合に発生します。この問題を解決するために、C# はいくつかの同時コレクションおよびスレッド セーフ メカニズムを提供します。この記事では、C# の一般的な同時コレクションとスレッド セーフティの問題に対処する方法を紹介し、具体的なコード例を示します。同時コレクション 1.1ConcurrentDictionaryConcurrentDictio

Java Iterator と Iterable: エレガントなコードを書くためのステップ Java Iterator と Iterable: エレガントなコードを書くためのステップ Feb 19, 2024 pm 02:54 PM

Iterator インターフェイス Iterator インターフェイスは、コレクションを走査するために使用されるインターフェイスです。 hasNext()、next()、remove() などのいくつかのメソッドが提供されます。 hasNext() メソッドは、コレクション内に次の要素があるかどうかを示すブール値を返します。 next() メソッドは、コレクション内の次の要素を返し、それをコレクションから削除します。 Remove() メソッドは、コレクションから現在の要素を削除します。次のコード例は、Iterator インターフェイスを使用してコレクションを反復処理する方法を示しています。 Listnames=Arrays.asList("John","Mary","Bob");Iterator

PHP 浮動小数点演算の問題の分析と解決策 PHP 浮動小数点演算の問題の分析と解決策 Feb 27, 2024 am 11:03 AM

PHP は Web サイト開発で広く使用されているスクリプト言語であり、その強力な機能と柔軟性により、多くの開発者に選ばれるツールとなっています。ただし、PHP では、浮動小数点演算を処理する場合、特に精度と精度に関していくつかの問題もあります。この記事では、PHP の浮動小数点演算の問題を分析し、いくつかの解決策を提案し、読者がこれらの問題をよりよく理解して解決できるように、具体的なコード例も示します。問題分析 PHP では、浮動小数点数は小数を表すために使用されるデータ型です。

See all articles