在MySQL中如何使用连接维护数据驱动的表关系?
实际上,有时我们可以避免在表中维护数据驱动的关系,而需要连接它们。可以通过在SELECT列表中使用CASE语句来处理连接的可能性。为了理解它,我们将采用三个数据驱动表的示例,即“学生详细信息”,该表具有以下数据−
mysql> Select * from student_detail;
+----+---------+
| Id | Name |
+----+---------+
| 1 | Harshit |
| 2 | Rahul |
| 3 | Aarav |
+----+---------+
3 rows in set (0.00 sec)
现在,我们有三个表,分别是“Student_Harshit”,“Student_Rahul”和“Student_Aarav”,并且它们分别为学生Harshit,Rahul和Aarav提供了备注信息。他们具有以下数据−
mysql> Select * from Student_Harshit;
+----+-----------+
| Id | Remarks |
+----+-----------+
| 1 | Excellent |
+----+-----------+
1 row in set (0.00 sec)
mysql> Select * from Student_Rahul;
+----+---------+
| Id | Remarks |
+----+---------+
| 2 | Average |
+----+---------+
1 row in set (0.00 sec)
mysql> Select * from Student_Aarav;
+----+-------------+
| Id | Remarks |
+----+-------------+
| 3 | Intelligent |
+----+-------------+
1 row in set (0.00 sec)
现在,以下查询将处理这些数据驱动的表−
mysql> Select sd.id, sd.name, CASE name WHEN 'Harshit' THEN H1.Remarks WHEN 'Rahul' THEN R1.Remarks WHEN 'Aarav' THEN A1.Remarks ELSE 'Error' END as REMARKS FROM Student_detail AS sd LEFT JOIN Student_Harshit AS H1 ON sd.id = H1.id LEFT JOIN Student_Rahul AS R1 ON sd.id = R1.id LEFT JOIN Student_Aarav AS A1 on sd.id = A1.id;
+----+---------+-------------+
| id | name | REMARKS |
+----+---------+-------------+
| 1 | Harshit | Excellent |
| 2 | Rahul | Average |
| 3 | Aarav | Intelligent |
+----+---------+-------------+
3 rows in set (0.00 sec)
阅读更多:MySQL 教程