ホームページ >データベース >mysql チュートリアル >mysqlの自己接続を解析してアソシエーションに参加する
この記事では、主に mysql の自己結合と結合関連の情報を紹介します。この記事の紹介は、必要な方には参考になると思います。下に。
1. mysql 自己接続
mysql は、情報をクエリするとき にそれ自身に接続する (自己接続) 必要があるため、テーブルのエイリアスを定義する必要があります。以下に例を示します。購入価格が Huihui よりも高いすべての情報を見つける必要があります。
通常、このテーブルを確認するときは、最初に次のステートメントを使用して操作します:
SELECT * FROM shoping WHERE price>27
ご想像のとおり、データベース テーブルの詳細なデータやデータ量がかなり多い 毛織物?データベース管理者は、必要なデータを迅速に見つけるために他の方法を使用する必要があります。
ステップバイステップクエリ
最も単純な方法であり、操作を考えるのが最も簡単です:
SELECT price FROM shopping WHERE name='惠惠' //得出price查询结果为27 SELECT * FROM shopping WHERE price>27
自己接続方法と比較して、この方法は中間結果に対する手動介入を必要とし、明らかに役に立ちませんプログラムの自動処理動作まで。
自己接続方法:
SELECT b.* from shopping as a,shopping as b where a.name='惠惠' and a.price<b.price order by b.id
次のテーブル情報を取得できます:
注:
エイリアスaとbは名前が異なりますが、それらは同じテーブルであり、エイリアスを定義する 目的は、自分で削除したり選択したりしやすくすることです。
select through(中間テーブル)を実行して得られたb.*が最終結果です。
Subquery
Subquery も一般的に使用される方法で、select 内に select をネストします。
実装コードは次のとおりです。
SELECT * FROM shopping WHERE price>(select price from 'shopping' where name='惠惠')
結果は次のとおりです。2 つのメソッドで得られる結果は同じであることがわかります。 INNER JOIN
内部結合の主な機能は、テーブル内に少なくとも 1 つの一致がある場合に結果セットが返されることです。内部結合とここでの結合は同じ機能を持つため、一緒に紹介します。
以下は、商品テーブルとカテゴリーテーブルの 2 つのテーブルです:
SELECT * FROM goods INNER JOIN category ON goods.id=category.goods_id ORDER BY gods.id結果は次のとおりです:
JOIN
LEFT J OINキーワード会議 リターンズ右側のテーブル (table_name2) に一致する行がない場合でも、左側のテーブル (table_name1) のすべての行。プロジェクトで作業する場合は、左側の関連付けを使用することをお勧めします。ただし、テーブルのリレーションシップが多数あり、1 つのテーブルは a への左結合であると同時に、b への右結合でもあります。この場合、右結合を追加する方が記述しやすい場合があります。
最初の 2 つのテーブルを適用して、左結合クエリを実行します:
SELECT goods.*,category.cate_name FROM goods LEFT JOIN category ON goods.id=category.goods_id ORDER BY goods.id
RIGHT
JOIN
SELECT a.goods_name,a.price,b.* FROM goods as a RIGHT JOIN category as b ON a.id=b.goods_id ORDER BY b.id
複数のテーブルの相関の場合は、相関ステートメントをさらにいくつか追加するだけです。
以上がmysqlの自己接続を解析してアソシエーションに参加するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。