MySQL gagnasafn innri sameina multi-töflu notkun? vinstri vinstri tengja notkun skilvirkni

MySQL gagnagrunnurinnri join multi-table notkun? vinstri vinstri tengja notkun skilvirkni

Mysql notkun tengingar

Í fyrri köflum höfum við lært hvernig á að lesa gögn úr einni töflu, sem er tiltölulega einfalt, en í raunverulegum forritum er oft nauðsynlegt að lesa gögn úr mörgum gagnatöflum.

Í þessum kafla munum við sýna þér hvernig á að nota MySQL JOIN til að spyrjast fyrir um gögn í tveimur eða fleiri töflum.

Þú getur notað JOIN frá Mysql í SELECT, UPDATE og DELETE yfirlýsingum til að sameina fjölborða fyrirspurnir.

JOIN er gróflega skipt í eftirfarandi þrjá flokka eftir hlutverki þess:

  • INNER JOIN (innri join, eða equijoin): Fáðu færslur með samsvarandi reitum í tveimur töflum.
  • LEFT JOIN (vinstri sameinast):Fáðu allar færslur í vinstri töflunni, jafnvel þótt engar samsvarandi færslur séu í hægri töflunni.
  • RIGHT JOIN (hægri sameining): Öfugt við LEFT JOIN er það notað til að fá allar færslur í hægri töflunni, jafnvel þótt engar samsvarandi samsvarandi færslur séu í vinstri töflunni.

Notkun INNER JOIN í skipanalínunni

Við höfum tvær töflur tcount_tbl og chenweiliang_tbl í chenweiliang gagnagrunninum.Gögnin í gagnatöflunum tveimur eru sem hér segir:

Dæmi

Prófaðu eftirfarandi dæmi:

gögn um prófunartilvik

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)

Næst munum við nota MySQLINNER JOIN (þú getur líka sleppt INNER og notað JOIN, áhrifin eru þau sömu)Til að tengja ofangreindar tvær töflur til að lesa gildi chenweiliang_count reitsins sem samsvarar öllum chenweiliang_author reitunum í chenweiliang_tbl töflunni í tcount_tbl töflunni:

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)

Ofangreind SQL setning jafngildir:

HVAR ákvæði

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 VINSTRI JOIN

MySQL vinstri join er öðruvísi en join. MySQL LEFT JOIN mun lesa öll gögnin í vinstri gagnatöflunni, jafnvel þó að hægri taflan hafi engin samsvarandi gögn.

Dæmi

Prófaðu eftirfarandi dæmi til að chenweiliang_tbl fyrir vinstra borðið,tcount_tbl Fyrir rétta töfluna, skildu notkun MySQL LEFT JOIN:

Vinstri félagi

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)

Í dæminu hér að ofan er LEFT JOIN notað. Þessi fullyrðing mun lesa öll valin svæðisgögn gagnatöflunnar chenweiliang_tbl vinstra megin, jafnvel þótt ekkert samsvarandi svæðisgildi chenweiliang_author sé í töflunni tcount_tbl hægra megin.


MySQL RÉTT TENGSLAST

MySQL RIGHT JOIN mun lesa öll gögnin í gagnatöflunni til hægri, jafnvel þótt engin samsvarandi gögn séu í töflunni til vinstri.

Dæmi

Prófaðu eftirfarandi dæmi til að chenweiliang_tbl fyrir vinstra borðið,tcount_tbl Fyrir rétta töfluna, skildu notkun MySQL RIGHT JOIN:

RÉTT GANGI

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 er notað í dæminu hér að ofan, þessi fullyrðing mun lesa öll valin svæðisgögn gagnatöflunnar tcount_tbl hægra megin, jafnvel þótt ekkert samsvarandi svæðisgildi chenweiliang_author sé í töflunni chenweiliang_tbl til vinstri.


Að nota JOIN í PHP handriti

Mysqli_query() aðgerðin er notuð í PHP til að keyra SQL setningar, þú getur notað sömu SQL setningu og hér að ofan sem færibreytu mysqli_query() fallsins.

Prófaðu eftirfarandi dæmi:

MySQL ORDER BY próf:

<?
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 blogg ( https://www.chenweiliang.com/ ) deildi „Multi-table usage of MySQL database inner join? vinstri Vinstri Join Usage Efficiency", mun það hjálpa þér.

Velkomið að deila tengli þessarar greinar:https://www.chenweiliang.com/cwl-488.html

Velkomin á Telegram rásina á bloggi Chen Weiliang til að fá nýjustu uppfærslurnar!

🔔 Vertu fyrstur til að fá dýrmæta „ChatGPT Content Marketing AI Notkunarleiðbeiningar“ í efstu möppu rásarinnar! 🌟
📚 Þessi handbók inniheldur mikið gildi, 🌟Þetta er sjaldgæft tækifæri, ekki missa af því! ⏰⌛💨
Deildu og likeðu ef þú vilt!
Deiling þín og líkar við eru stöðug hvatning okkar!

 

发表 评论

Netfangið þitt verður ekki birt. Nauðsynlegir reitir eru notaðir * Merkimiði

flettu efst