mysqlで内部結合と左結合を使用する方法
Difference
差異を返す
1. 内部結合は、2 つのテーブル内の結合フィールドが等しい行のみを返します
2. 左結合の数が以下です。左側のテーブルのレコード数と右側のテーブルのレコード数に等しくなります。
異なる数値
1. 内部結合は、右側のテーブルの結合フィールドに等しい、左側のテーブルのすべてのレコードを返します。
2. 左結合の数は、左テーブルのレコード数と同じです。
レコード属性は異なります。
1. レコード属性は、内部結合に不十分な部分は直接破棄されます。
2. 左結合が不十分なレコード属性を NULL で埋めます
内部結合シナリオ
2 つのテーブルを設計します:
channel チャネル テーブル: チャネル ID 、チャネル名など。
module モジュール テーブル: モジュール ID、モジュール名、channel_id。
ページにチャネルが表示される場合、新しいチャネルはあるもののモジュールがない場合があります。この時点では、内部結合は使用できません。そうでないと、新しく追加されたモジュールをクエリできないため、左結合を使用します。
select channel.* from channel left join modules on channel.id = modules.channel_id where page_id=1 group by channel.id order by channel.new_sort asc , channel.id desc
1. Page_id は、どのページ タイプを区別するためにチャネル テーブルで定義されているページ タイプを参照します
2. チャネル ID には複数のモジュールを関連付けることができるため、チャネルに関連付ける必要がありますid Grouping
3. New_sort はチャンネルの並び替え表示を設定することができ、また、同じ並び順のチャンネルを最初に表示する必要があります。
以下の場合、新規に作成したチャンネルは表示されず、モジュールのないチャンネルも表示されません。
select channel.* from channel inner join modules on channel.id=modules.channel_id where page_id=1 group by channel.id order by channel.new_sort asc , channel.id desc
最後に少し疑問なのですが、チャンネルはチャンネル関連情報のみを表示し、関連するモジュール情報は使用しないので、これでニーズは満たせるのではないかと感じています。後で問題が見つかったら更新します
select channel.* from channel where page_id=1 order by channel.new_sort asc , channel.id desc
えーっと、質問に付け加えますと、上記の残りの問題は、モジュールの ID をページ上でクエリする必要があるため、関連付けられるということです。
以前に内部結合シナリオに遭遇したことがあります。後で追加します~
内部結合シナリオ
新しいポリシー テーブルpolicy_libを追加し、中間テーブルを作成しますchannel_policy レコード チャネル チャネルは、policy_lib ポリシー テーブルに関連付けられます。
SQL は次のように記述されていることがわかります
select policy_lib.id,channel_policy.policy_id,channel_policy.channel_id,channel.id from policy_lib inner join channel_policy on channel_policy.policy_id=policy_lib.id inner join channel on channel.id=channel_policy.channel_id
内部結合を使用すると、明らかに結果クエリは空になりません。左結合を使用すると、テーブルにダーティ データがある場合に備えて、データが存在します。処理中に、左側にスペース、右側にスペースを入力する必要があるのは明らかに不合理です。
以上がmysqlで内部結合と左結合を使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

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

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

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

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

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

ホットトピック











Laravelは、Webアプリケーションを簡単に構築するためのPHPフレームワークです。次のような強力な機能を提供します。インストール:Laravel CLIを作曲家にグローバルにインストールし、プロジェクトディレクトリにアプリケーションを作成します。ルーティング:ルート/web.phpのURLとハンドラーの関係を定義します。ビュー:リソース/ビューでビューを作成して、アプリケーションのインターフェイスをレンダリングします。データベース統合:MySQLなどのデータベースとのすぐ外側の統合を提供し、移行を使用してテーブルを作成および変更します。モデルとコントローラー:モデルはデータベースエンティティを表し、コントローラーはHTTP要求を処理します。

MySQLとPHPMyAdminは、強力なデータベース管理ツールです。 1)MySQLは、データベースとテーブルを作成し、DMLおよびSQLクエリを実行するために使用されます。 2)PHPMyAdminは、データベース管理、テーブル構造管理、データ操作、ユーザー許可管理のための直感的なインターフェイスを提供します。

他のプログラミング言語と比較して、MySQLは主にデータの保存と管理に使用されますが、Python、Java、Cなどの他の言語は論理処理とアプリケーション開発に使用されます。 MySQLは、データ管理のニーズに適した高性能、スケーラビリティ、およびクロスプラットフォームサポートで知られていますが、他の言語は、データ分析、エンタープライズアプリケーション、システムプログラミングなどのそれぞれの分野で利点があります。

小さなアプリケーションを開発する際には、軽量データベース操作ライブラリをすばやく統合する必要性という厄介な問題に遭遇しました。複数のライブラリを試した後、私はそれらがあまりにも多くの機能を持っているか、あまり互換性がないかのどちらかであることがわかりました。最終的に、私は問題を完全に解決したYii2に基づいた単純化されたバージョンであるMinii/DBを見つけました。

記事の概要:この記事では、Laravelフレームワークを簡単にインストールする方法について読者をガイドするための詳細なステップバイステップの指示を提供します。 Laravelは、Webアプリケーションの開発プロセスを高速化する強力なPHPフレームワークです。このチュートリアルは、システム要件からデータベースの構成とルーティングの設定までのインストールプロセスをカバーしています。これらの手順に従うことにより、読者はLaravelプロジェクトのための強固な基盤を迅速かつ効率的に築くことができます。

Theliaを使用してeコマースWebサイトを開発するとき、私はトリッキーな問題に遭遇しました:MySQLモードが適切に設定されていないため、いくつかの機能が適切に機能しません。いくつかの調査の後、TheliamysQlModescheckerというモジュールを見つけました。これは、Theliaが必要とするMySQLパターンを自動的に修正できるため、問題を完全に解決できます。

MySQLは、テーブル構造とSQLクエリを介して構造化されたデータを効率的に管理し、外部キーを介してテーブル間関係を実装します。 1.テーブルを作成するときにデータ形式と入力を定義します。 2。外部キーを使用して、テーブル間の関係を確立します。 3。インデックス作成とクエリの最適化により、パフォーマンスを改善します。 4.データベースを定期的にバックアップおよび監視して、データのセキュリティとパフォーマンスの最適化を確保します。

MySQLは、Web開発で広く使用されているオープンソースリレーショナルデータベース管理システムです。その重要な機能には、次のものが含まれます。1。さまざまなシナリオに適したInnodbやMyisamなどの複数のストレージエンジンをサポートします。 2。ロードバランスとデータバックアップを容易にするために、マスタースレーブレプリケーション機能を提供します。 3.クエリの最適化とインデックスの使用により、クエリ効率を改善します。
