TableA id firstName lastName ....................................... 1 arun prasanth 2 ann antony 3 sruthy abc 6 new abc
TableB id2 age Place ................ 1 24 kerala 2 24 usa 3 25 ekm 5 24 chennai
1. INNER JOIN
INNER JOIN 返回两个表中匹配的行,即两个表的交集。
语法:
1 2 3 4
SELECT table1.column1, table2.column2... FROM table1 INNERJOIN table2 ON table1.common_field = table2.common_field;
示例查询:
1 2 3 4
SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place FROM TableA INNERJOIN TableB ON TableA.id = TableB.id2;
查询结果:
1 2 3 4 5
firstName lastName age Place .............................................. arun prasanth 24 kerala ann antony 24 usa sruthy abc 25 ekm
2. LEFT JOIN
LEFT JOIN 返回左表中的所有行,以及右表中匹配的行。如果右表中没有匹配的行,则右表的列将填充为 NULL。
语法:
1 2 3 4
SELECT table1.column1, table2.column2... FROM table1 LEFTJOIN table2 ON table1.common_field = table2.common_field;
示例查询:
1 2 3 4
SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place FROM TableA LEFTJOIN TableB ON TableA.id = TableB.id2;
查询结果:
1 2 3 4 5 6
firstName lastName age Place ............................................................................... arun prasanth 24 kerala ann antony 24 usa sruthy abc 25 ekm new abc NULL NULL
3. RIGHT JOIN
RIGHT JOIN 返回右表中的所有行,以及左表中匹配的行。如果左表中没有匹配的行,则左表的列将填充为 NULL。
语法:
1 2 3 4
SELECT table1.column1, table2.column2... FROM table1 RIGHTJOIN table2 ON table1.common_field = table2.common_field;
示例查询:
1 2 3 4
SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place FROM TableA RIGHTJOIN TableB ON TableA.id = TableB.id2;
查询结果:
1 2 3 4 5 6
firstName lastName age Place ............................................................................... arun prasanth 24 kerala ann antony 24 usa sruthy abc 25 ekm NULL NULL 24 chennai
4. FULL JOIN
FULL JOIN 结合了 LEFT JOIN 和 RIGHT JOIN 的结果,返回两个表中的所有行。如果某一行在另一个表中没有匹配的行,则对应的列将填充为 NULL。
语法:
1 2 3 4
SELECT table1.column1, table2.column2... FROM table1 FULLJOIN table2 ON table1.common_field = table2.common_field;
示例查询:
1 2 3 4
SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place FROM TableA FULLJOIN TableB ON TableA.id = TableB.id2;
查询结果:
1 2 3 4 5 6 7
firstName lastName age Place ............................................................................... arun prasanth 24 kerala ann antony 24 usa sruthy abc 25 ekm new abc NULL NULL NULL NULL 24 chennai
MySQL不支持标准的FULL JOIN:MySQL没有直接支持标准的 FULL JOIN 语法,可以使用 UNION 结合 LEFT JOIN 和 RIGHT JOIN 来模拟实现。例如:
1 2 3 4 5 6 7 8 9
SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place FROM TableA LEFTJOIN TableB ON TableA.id = TableB.id2 UNION SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place FROM TableA RIGHTJOIN TableB ON TableA.id = TableB.id2;