MySQL өгөгдлийн сангийн дотоод нэгдэл олон хүснэгтийн хэрэглээ? зүүн зүүн нэгдэх ашиглалтын үр ашиг

MySQL мэдээллийн сандотоод нэгдэл олон хүснэгтийн хэрэглээ? зүүн зүүн нэгдэх ашиглалтын үр ашиг

Майклл холболтын хэрэглээ

Өмнөх бүлгүүдэд бид нэг хүснэгтээс өгөгдлийг хэрхэн унших талаар сурсан бөгөөд энэ нь харьцангуй энгийн боловч бодит хэрэглээнд олон өгөгдлийн хүснэгтээс өгөгдлийг унших шаардлагатай болдог.

Энэ бүлэгт бид MySQL-ийн JOIN-г ашиглан хоёр ба түүнээс дээш хүснэгтэд өгөгдөл хайхад хэрхэн ашиглахыг харуулах болно.

Та Mysql-ийн JOIN-ийг SELECT, UPDATE, DELETE хэллэгт ашиглаж, олон хүснэгттэй асуулгад нэгдэх боломжтой.

JOIN нь чиг үүргийнхээ дагуу дараах гурван ангилалд хуваагдана.

  • ДОТООД НЭГДСЭН (дотоод нэгдэх, эсвэл тэнцэх): Хоёр хүснэгтэд тохирох талбар бүхий бичлэгүүдийг авах.
  • ЗҮҮН НЭГДЭХ (зүүн талд нэгдэх):Баруун талын хүснэгтэд тохирох бичлэг байхгүй байсан ч зүүн талын хүснэгтэд байгаа бүх бичлэгийг аваарай.
  • БАРУУН НЭГДЭХ (баруун талд нэгдэх): LEFT JOIN-ээс ялгаатай нь зүүн хүснэгтэд тохирох бичлэг байхгүй байсан ч баруун талын хүснэгтийн бүх бичлэгийг авахад ашиглагддаг.

Командын мөрөнд INNER JOIN-г ашиглаж байна

Бидэнд chenweiliang мэдээллийн санд tcount_tbl болон chenweiliang_tbl гэсэн хоёр хүснэгт бий.Хоёр өгөгдлийн хүснэгтийн өгөгдөл дараах байдалтай байна.

жишээ

Дараах жишээг үзээрэй.

туршилтын жишээний өгөгдөл

mysql> use chenweiliang;
Database changed
mysql> SELECT * FROM tcount_tbl;
+---------------+--------------+
| chenweiliang_author | chenweiliang_count |
+---------------+--------------+
| 陈沩亮博客 | 10 |
| chenweiliang.com | 20 |
| Google | 22 |
+---------------+--------------+
3 rows in set (0.01 sec)
 
mysql> SELECT * from chenweiliang_tbl;
+-----------+---------------+---------------+-----------------+
| chenweiliang_id | chenweiliang_title | chenweiliang_author | submission_date |
+-----------+---------------+---------------+-----------------+
| 1 | 学习 PHP | 陈沩亮博客 | 2017-04-12 |
| 2 | 学习 MySQL | 陈沩亮博客 | 2017-04-12 |
| 3 | 学习 Java | chenweiliang.com | 2015-05-01 |
| 4 | 学习 Python | chenweiliang.com | 2016-03-06 |
| 5 | 学习 C | FK | 2017-04-05 |
+-----------+---------------+---------------+-----------------+
5 rows in set (0.01 sec)

Дараа нь бид MySQL ашиглах болноINNER JOIN (та INNER-г орхиж, JOIN-г ашиглаж болно, үр нөлөө нь адилхан)Дээрх хоёр хүснэгтийг холбохын тулд tcount_tbl хүснэгтийн chenweiliang_tbl хүснэгтийн бүх chenweiliang_author талбарт харгалзах chenweiliang_count талбарын утгыг уншина уу:

INNER JOIN

mysql> SELECT a.chenweiliang_id, a.chenweiliang_author, b.chenweiliang_count FROM chenweiliang_tbl a INNER JOIN tcount_tbl b ON a.chenweiliang_author = b.chenweiliang_author;
+-------------+-----------------+----------------+
| a.chenweiliang_id | a.chenweiliang_author | b.chenweiliang_count |
+-------------+-----------------+----------------+
| 1 | 陈沩亮博客 | 10 |
| 2 | 陈沩亮博客 | 10 |
| 3 | chenweiliang.com | 20 |
| 4 | chenweiliang.com | 20 |
+-------------+-----------------+----------------+
4 rows in set (0.00 sec)

Дээрх SQL мэдэгдэл нь дараахтай тэнцүү байна:

WHERE заалт

mysql> SELECT a.chenweiliang_id, a.chenweiliang_author, b.chenweiliang_count FROM chenweiliang_tbl a, tcount_tbl b WHERE a.chenweiliang_author = b.chenweiliang_author;
+-------------+-----------------+----------------+
| a.chenweiliang_id | a.chenweiliang_author | b.chenweiliang_count |
+-------------+-----------------+----------------+
| 1 | 陈沩亮博客 | 10 |
| 2 | 陈沩亮博客 | 10 |
| 3 | chenweiliang.com | 20 |
| 4 | chenweiliang.com | 20 |
+-------------+-----------------+----------------+
4 rows in set (0.01 sec)

MySQL ЗҮҮН НЭГДСЭН

MySQL зүүн нэгдэл нь нэгдэхээс өөр юм. MySQL LEFT JOIN нь баруун талын хүснэгтэд тохирох өгөгдөлгүй байсан ч зүүн талын өгөгдлийн хүснэгтийн бүх өгөгдлийг унших болно.

жишээ

Дараах жишээнүүдийг туршиж үзээрэй chenweiliang_tbl зүүн ширээний хувьдtcount_tbl Зөв хүснэгтийн хувьд MySQL LEFT JOIN програмыг ойлгоорой:

ЗОРИЛГО БАЙХ

mysql> SELECT a.chenweiliang_id, a.chenweiliang_author, b.chenweiliang_count FROM chenweiliang_tbl a LEFT JOIN tcount_tbl b ON a.chenweiliang_author = b.chenweiliang_author;
+-------------+-----------------+----------------+
| a.chenweiliang_id | a.chenweiliang_author | b.chenweiliang_count |
+-------------+-----------------+----------------+
| 1 | 陈沩亮博客 | 10 |
| 2 | 陈沩亮博客 | 10 |
| 3 | chenweiliang.com | 20 |
| 4 | chenweiliang.com | 20 |
| 5 | FK | NULL |
+-------------+-----------------+----------------+
5 rows in set (0.01 sec)

Дээрх жишээнд LEFT JOIN-г ашигласан. Энэ мэдэгдэл нь баруун талд байгаа tcount_tbl хүснэгтэд chenweiliang_author-ын харгалзах талбарын утга байхгүй байсан ч гэсэн зүүн талд байгаа chenweiliang_tbl өгөгдлийн хүснэгтийн сонгосон талбарын бүх өгөгдлийг унших болно.


MySQL-г ЗӨВ НЭГДЭХ

MySQL RIGHT JOIN нь зүүн талын хүснэгтэд харгалзах өгөгдөл байхгүй байсан ч баруун талын өгөгдлийн хүснэгтийн бүх өгөгдлийг унших болно.

жишээ

Дараах жишээнүүдийг туршиж үзээрэй chenweiliang_tbl зүүн ширээний хувьдtcount_tbl Зөв хүснэгтийн хувьд MySQL RIGHT JOIN програмыг ойлгоорой:

ЗӨВ НЭГДЭХ

mysql> SELECT a.chenweiliang_id, a.chenweiliang_author, b.chenweiliang_count FROM chenweiliang_tbl a RIGHT JOIN tcount_tbl b ON a.chenweiliang_author = b.chenweiliang_author;
+-------------+-----------------+----------------+
| a.chenweiliang_id | a.chenweiliang_author | b.chenweiliang_count |
+-------------+-----------------+----------------+
| 1 | 陈沩亮博客 | 10 |
| 2 | 陈沩亮博客 | 10 |
| 3 | chenweiliang.com | 20 |
| 4 | chenweiliang.com | 20 |
| NULL | NULL | 22 |
+-------------+-----------------+----------------+
5 rows in set (0.01 sec)

Дээрх жишээнд RIGHT JOIN-ийг ашигласан бөгөөд зүүн талын chenweiliang_tbl хүснэгтэд chenweiliang_author-ын харгалзах талбарын утга байхгүй байсан ч энэ мэдэгдэл нь баруун талд байгаа tcount_tbl өгөгдлийн хүснэгтийн сонгосон талбарын бүх өгөгдлийг унших болно.


PHP скрипт дээр JOIN ашиглаж байна

Mysqli_query() функцийг PHP-д SQL хэллэгүүдийг гүйцэтгэхэд ашигладаг бөгөөд та дээрхтэй ижил SQL мэдэгдлийг mysqli_query() функцийн параметр болгон ашиглаж болно.

Дараах жишээг үзээрэй.

MySQL-г тестээр захиалах:

<?
php
$dbhost = 'localhost:3306'; // mysql服务器主机地址
$dbuser = 'root'; // mysql用户名
$dbpass = '123456'; // mysql用户名密码
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
 die('连接失败: ' . mysqli_error($conn));
}
// 设置编码,防止中文乱码
mysqli_query($conn , "set names utf8");
 
$sql = 'SELECT a.chenweiliang_id, a.chenweiliang_author, b.chenweiliang_count FROM chenweiliang_tbl a INNER JOIN tcount_tbl b ON a.chenweiliang_author = b.chenweiliang_author';
 
mysqli_select_db( $conn, 'chenweiliang' );
$retval = mysqli_query( $conn, $sql );
if(! $retval )
{
 die('无法读取数据: ' . mysqli_error($conn));
}
echo '<h2>陈沩亮博客 MySQL JOIN 测试<h2>';
echo '<table border="1"><tr><td>教程 ID</td><td>作者</td><td>登陆次数</td></tr>';
while($row = mysqli_fetch_array($retval, MYSQL_ASSOC))
{
 echo "<tr><td> {$row['chenweiliang_id']}</td> ".
 "<td>{$row['chenweiliang_author']} </td> ".
 "<td>{$row['chenweiliang_count']} </td> ".
 "</tr>";
}
echo '</table>';
mysqli_close($conn);
?>

Hope Chen Weiliang блог ( https://www.chenweiliang.com/ ) shared "MySQL өгөгдлийн сангийн дотоод холболтын олон хүснэгтийн хэрэглээ? Left Left Join Usage Efficiency"-г орхисон", энэ нь танд туслах болно.

Энэ нийтлэлийн холбоосыг хуваалцахад тавтай морилно уу:https://www.chenweiliang.com/cwl-488.html

Чен Вэйляны блогын Telegram сувагт тавтай морил, хамгийн сүүлийн үеийн мэдээг аваарай!

🔔 Сувгийн шилдэг лавлахаас "ChatGPT Content Marketing AI Tool Usage Guide"-г хамгийн түрүүнд аваарай! 🌟
📚 Энэхүү гарын авлага нь асар их үнэ цэнийг агуулсан, 🌟Энэ бол ховор боломж, бүү алдаарай! ⏰⌛💨
Хэрэв танд таалагдвал лайк дарж, хуваалцаарай!
Таны хуваалцах, дуртай зүйл бол бидний байнгын урам зориг юм!

 

发表 评论

Таны имэйл хаяг нийтлэгдэхгүй. 必填 项 已 用 дээр ажиллаж байна * 标注

滚动 到 顶部