カンマ区切り値を使用したテーブルの結合: 完全ガイド
データベース テーブルには、特定の列にカンマ区切り値が含まれることがよくあります。各値を対応する行に関連付ける必要があるため、データをクエリするときに問題が発生します。一般的なシナリオの 1 つは、一方の列にもう一方のテーブルを参照するカンマ区切り値が含まれる 2 つのテーブルを結合することです。
次の例を考えてみましょう:
Notes テーブル
nid | forDepts |
---|---|
1 | 1,2,4 |
2 | 4,5 |
ポジションテーブル
id | name |
---|---|
1 | Executive |
2 | Corp Admin |
3 | Sales |
4 | Art |
5 | Marketing |
目標は、Notes テーブルの 'forDepts' 列を、Positions テーブルの対応する部門名に関連付けることです。目的の出力は次のようになります。
nid | DepartmentName |
---|---|
1 | Executive, Corp Admin, Art |
2 | Art, Marketing |
データベース構造を変更せずに、SQL 関数の組み合わせを使用してこれを実現できます。
FIND_IN_SET と GROUP_CONCAT を使用する
FIND_IN_SET 関数と GROUP_CONCAT 関数を組み合わせて使用できます各 'forDepts' 値の部門名を抽出して集計するには:
SELECT a.nid, GROUP_CONCAT(b.name ORDER BY b.id) DepartmentName FROM Notes a INNER JOIN Positions b ON FIND_IN_SET(b.id, a.forDepts) > 0 GROUP BY a.nid
仕組み
- FIND_IN_SET 関数は、指定された値が存在するかどうかを確認します。カンマ区切りの文字列内で指定します。この場合、Notes テーブルの 'forDepts' 値に Positions テーブルの部門の ID が含まれているかどうかを判断するために使用されます。
- INNER JOIN 句は、Notes テーブルと Positions テーブルの行と一致します。 FIND_IN_SET 条件が true です。
- GROUP_CONCAT 関数は、Notes テーブル内の各「nid」に一致する部門名を集計します。 ORDER BY 句により、名前が ID に基づいて昇順に並べ替えられます。
Result
クエリの出力は、目的のテーブルになります。 「nid」列と、対応するカンマ区切りの「DepartmentName」を結合したもの
結論
FIND_IN_SET 関数と GROUP_CONCAT 関数を活用すると、カンマ区切りの値を使用して 2 つのテーブルを効果的に結合でき、テーブル間でデータを抽出して集計できるようになります。データベース構造が正規化されていない場合でも。この手法は、Excel などの他のアプリケーションにデータをエクスポートする場合に特に役立ちます。
以上がSQL を使用してカンマ区切り値でテーブルを結合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

mysqlviewshavelimitations:1)supportallsqloperations、制限、dataManipulationswithjoinsorubqueries.2)それらは、特にパフォーマンス、特にパルフェクソルラージャターセット

reperusermanmanagementInmysqliscialforenhancingsecurationsinginuring databaseaperation.1)usecreateusertoaddusers、指定connectionsourcewith@'localhost'or@'% '。

mysqldoes notimposeahardlimitontriggers、しかしpracticalfactorsdeTerminetheireffectiveuse:1)serverconufigurationStriggermanagement; 2)complentiggersincreaseSystemload;

はい、それはssafetostoreblobdatainmysql、butonsiderheSeCactors:1)Storagespace:blobscanconsumesificantspace.2)パフォーマンス:パフォーマンス:大規模なドゥエットブロブスメイズ階下3)backupandrecized recized recized recize

PHP Webインターフェイスを介してMySQLユーザーを追加すると、MySQLI拡張機能を使用できます。手順は次のとおりです。1。MySQLデータベースに接続し、MySQLI拡張機能を使用します。 2。ユーザーを作成し、CreateUserステートメントを使用し、パスワード()関数を使用してパスワードを暗号化します。 3. SQLインジェクションを防ぎ、MySQLI_REAL_ESCAPE_STRING()関数を使用してユーザー入力を処理します。 4.新しいユーザーに権限を割り当て、助成金ステートメントを使用します。

mysql'sblobissuitable forstoringbinarydatawithinarationaldatabase、whileenosqloptionslikemongodb、redis、andcassandraofferferulesions forunstructureddata.blobissimplerbutcanslowdowdowd withwithdata

toaddauserinmysql、使用:createuser'username '@' host'identifidedby'password '; here'showtodoitsely:1)chosehostcarefilytoconを選択しますTrolaccess.2)setResourcelimitslikemax_queries_per_hour.3)usestrong、uniquasswords.4)endforcessl/tlsconnectionswith

toavoidcommonMonmistakeswithStringDatatypesinmysql、undultingStringTypenuste、choosetherightType、andManageEncodingandCollationsEttingtingive.1)Usecharforfixed-LengthStrings、Varcharforaible Length、AndText/Blobforlardata.2)setCurrectCherts


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

Dreamweaver Mac版
ビジュアル Web 開発ツール

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません
