mysql の高度な結合 - 自己結合の使用例
自己結合
前に述べたように、テーブル エイリアスを使用する主な理由の 1 つは、単一の SELECT ステートメントで同じテーブルを複数回参照することです。ここに例を示します。
ある商品 (ID は DTNTR ) に問題が見つかり、この商品を製造するサプライヤーが製造した他の商品にも同様の問題があるかどうかを知りたいとします。このクエリでは、まず ID DTNTR の品目を製造するサプライヤーを検索し、次にこのサプライヤーが製造する他の品目を検索する必要があります。
この問題を解決する 1 つの方法は次のとおりです:
入力:
select prod_id,prod_name from products where vend_id = (select vend_id from products where prod_id = 'DTNTR');
出力:
分析: これはサブクエリを使用する最初の解決策です。内部の SELECT ステートメントは単純な検索を実行し、プロダクション ID が DTNTR である品目サプライヤーの Vend_id を返します。この ID は、このサプライヤーが製造したすべてのアイテムを取得するために外部クエリの WHERE 句で使用されます。
次に、結合を使用した同じクエリを見てみましょう:
入力:
select p1.prod_id,p1.prod_name from products as p1,products as p2 where p1.vend_id = p2.vend_id and p2.prod_id = 'DTNTR';
出力:
分析: このクエリで必要な 2 つのテーブルは実際には同じテーブルであるため、products テーブルは FROM 句にあります。 2回登場しました。これは完全に合法ですが、MySQL は products テーブル内のどのインスタンスを参照しているのかを認識しないため、product への参照があいまいになります。 この問題を解決するには、テーブルのエイリアスを使用します。最初に出現する製品はエイリアス p1 で、2 番目に出現するのはエイリアス p2 です。これらのエイリアスをテーブル名として使用できるようになりました。たとえば、SELECT ステートメントは p1 プレフィックスを使用して、必要な列の完全な名前を明示的に指定します。そうでない場合、それぞれ prod_id と prod_name という名前の 2 つの列があるため、MySQL はエラーを返します。 MySQL は、(実際には同じ列であっても) どの列が必要であるかを知りません。 WHERE (p1 の Vend_id と p2 の Vend_id を照合することによって) は、まず 2 つのテーブルを結合し、次に 2 番目のテーブルの prod_id でデータをフィルタリングし、必要なデータを返します。サブクエリの代わりに自己結合を使用する 自己結合は通常、同じテーブルからデータを取得するときに使用されるサブクエリ ステートメントを置き換える外部ステートメントとして使用されます。最終結果は同じですが、場合によっては、結合の処理の方がサブクエリの処理よりもはるかに高速です。両方の方法を試して、どちらのパフォーマンスが優れているかを判断する必要があります。
以上がmysql の高度な結合 - 自己結合の使用例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









MySQLデータベースでは、ユーザーとデータベースの関係は、アクセス許可と表によって定義されます。ユーザーには、データベースにアクセスするためのユーザー名とパスワードがあります。許可は助成金コマンドを通じて付与され、テーブルはCreate Tableコマンドによって作成されます。ユーザーとデータベースの関係を確立するには、データベースを作成し、ユーザーを作成してから許可を付与する必要があります。

データ統合の簡素化:AmazonrdsmysqlとRedshiftのゼロETL統合効率的なデータ統合は、データ駆動型組織の中心にあります。従来のETL(抽出、変換、負荷)プロセスは、特にデータベース(AmazonrdsmysQlなど)をデータウェアハウス(Redshiftなど)と統合する場合、複雑で時間がかかります。ただし、AWSは、この状況を完全に変えたゼロETL統合ソリューションを提供し、RDSMYSQLからRedshiftへのデータ移行のための簡略化されたほぼリアルタイムソリューションを提供します。この記事では、RDSMysQl Zero ETLのRedshiftとの統合に飛び込み、それがどのように機能するか、それがデータエンジニアと開発者にもたらす利点を説明します。

MySQLは、インストールが簡単で、強力で管理しやすいため、初心者に適しています。 1.さまざまなオペレーティングシステムに適した、単純なインストールと構成。 2。データベースとテーブルの作成、挿入、クエリ、更新、削除などの基本操作をサポートします。 3.参加オペレーションやサブクエリなどの高度な機能を提供します。 4.インデックス、クエリの最適化、テーブルパーティション化により、パフォーマンスを改善できます。 5。データのセキュリティと一貫性を確保するために、バックアップ、リカバリ、セキュリティ対策をサポートします。

MySQLのユーザー名とパスワードを入力するには:1。ユーザー名とパスワードを決定します。 2。データベースに接続します。 3.ユーザー名とパスワードを使用して、クエリとコマンドを実行します。

1.正しいインデックスを使用して、データの量を削減してデータ検索をスピードアップしました。テーブルの列を複数回検索する場合は、その列のインデックスを作成します。あなたまたはあなたのアプリが基準に従って複数の列からのデータが必要な場合、複合インデックス2を作成します2。選択した列のみを避けます。必要な列のすべてを選択すると、より多くのサーバーメモリを使用する場合にのみサーバーが遅くなり、たとえばテーブルにはcreated_atやupdated_atやupdated_atなどの列が含まれます。

次のコマンドでmysqlデータベースを表示します。サーバーに接続します:mysql -u username -pパスワードrun showデータベース。すべての既存のデータベースを取得するコマンド[データベース]を選択します。データベース名を使用します。テーブルを表示:表を表示します。テーブル構造を表示:テーブル名を説明してください。データを表示:[テーブル名]から[ *]を選択します。

NAVICAT自体はデータベースパスワードを保存せず、暗号化されたパスワードのみを取得できます。解決策:1。パスワードマネージャーを確認します。 2。NAVICATの「パスワードを記憶する」機能を確認します。 3.データベースパスワードをリセットします。 4.データベース管理者に連絡してください。

データベース酸属性の詳細な説明酸属性は、データベーストランザクションの信頼性と一貫性を確保するための一連のルールです。データベースシステムがトランザクションを処理する方法を定義し、システムのクラッシュ、停電、または複数のユーザーの同時アクセスの場合でも、データの整合性と精度を確保します。酸属性の概要原子性:トランザクションは不可分な単位と見なされます。どの部分も失敗し、トランザクション全体がロールバックされ、データベースは変更を保持しません。たとえば、銀行の譲渡が1つのアカウントから控除されているが別のアカウントに増加しない場合、操作全体が取り消されます。 TRANSACTION; updateaccountssetbalance = balance-100wh
