@AlexWuYh
2019-10-31T09:04:50.000000Z
字数 5318
阅读 93
MySQL
Table: Person
+----+-----------+----------+
| Id | FirstName | LastName |
+----+-----------+----------+
| 1 | Zhang | San |
| 2 | Li | Si |
| 3 | Wang | Wu |
+----+-----------+----------+
Table: Address
+--------+------+----------+-----------+
| AddrId | Id | City | Province |
+--------+------+----------+-----------+
| 1 | 1 | Beijing | Beijing |
| 2 | 2 | Shanghai | Shanghai |
| 5 | 5 | Shenzhen | Guangdong |
+--------+------+----------+-----------+
SELECT columns
FROM table1
INNER JOIN table2
ON table1.column = table2.column;
SELECT Person.Id, Person.FirstName, Person.LastName, Address.City, Address.Province
FROM Person
INNER JOIN Address
ON Person.Id = Address.Id;
// 执行结果如下:
+----+-----------+----------+----------+----------+
| Id | FirstName | LastName | City | Province |
+----+-----------+----------+----------+----------+
| 1 | Zhang | San | Beijing | Beijing |
| 2 | Li | Si | Shanghai | Shanghai |
+----+-----------+----------+----------+----------+
SELECT Person.Id, Person.FirstName, Person.LastName, Address.City, Address.Province
FROM Person, Address
WHERE Person.Id = Address.Id;
SELECT columns
FROM table1
LEFT [OUTER] JOIN table2
ON table1.column = table2.column;
SELECT Person.Id, Person.FirstName, Person.LastName, Address.City, Address.Province
FROM Person
LEFT OUTER JOIN Address
ON Person.Id = Address.Id;
// 执行结果如下:
+----+-----------+----------+----------+----------+
| Id | FirstName | LastName | City | Province |
+----+-----------+----------+----------+----------+
| 1 | Zhang | San | Beijing | Beijing |
| 2 | Li | Si | Shanghai | Shanghai |
| 3 | Wang | Wu | NULL | NULL |
+----+-----------+----------+----------+----------+
SELECT columns
FROM table1
RIGHT [OUTER] JOIN table2
ON table1.column = table2.column;
SELECT Person.Id, Person.FirstName, Person.LastName, Address.City, Address.Province
FROM Person
RIGHT OUTER JOIN Address
ON Person.Id = Address.Id;
// 执行结果如下:
+------+-----------+----------+----------+-----------+
| Id | FirstName | LastName | City | Province |
+------+-----------+----------+----------+-----------+
| 1 | Zhang | San | Beijing | Beijing |
| 2 | Li | Si | Shanghai | Shanghai |
| NULL | NULL | NULL | Shenzhen | Guangdong |
+------+-----------+----------+----------+-----------+
SELECT columns
FROM table1
LEFT OUTER JOIN table2
ON table1.columns = table2.columns
UNION
SELECT columns
FROM table1
RIGHT OUTER JOIN table2
ON table1.columns = table2.columns;
SELECT Person.Id, Person.FirstName, Person.LastName, Address.City, Address.Province
FROM Person
LEFT OUTER JOIN Address
ON Person.Id = Address.Id
UNION
SELECT Person.Id, Person.FirstName, Person.LastName, Address.City, Address.Province
FROM Person
RIGHT OUTER JOIN Address
ON Person.Id = Address.Id;
// 执行结果如下:
+------+-----------+----------+----------+-----------+
| Id | FirstName | LastName | City | Province |
+------+-----------+----------+----------+-----------+
| 1 | Zhang | San | Beijing | Beijing |
| 2 | Li | Si | Shanghai | Shanghai |
| 3 | Wang | Wu | NULL | NULL |
| NULL | NULL | NULL | Shenzhen | Guangdong |
+------+-----------+----------+----------+-----------+
UNION ALL
.
SELECT Person.Id, Person.FirstName, Person.LastName, Address.City, Address.Province
FROM Person
LEFT OUTER JOIN Address
ON Person.Id = Address.Id
UNION ALL
SELECT Person.Id, Person.FirstName, Person.LastName, Address.City, Address.Province
FROM Person
RIGHT OUTER JOIN Address
ON Person.Id = Address.Id;
// 执行结果如下:
+------+-----------+----------+----------+-----------+
| Id | FirstName | LastName | City | Province |
+------+-----------+----------+----------+-----------+
| 1 | Zhang | San | Beijing | Beijing |
| 2 | Li | Si | Shanghai | Shanghai |
| 3 | Wang | Wu | NULL | NULL |
| 1 | Zhang | San | Beijing | Beijing |
| 2 | Li | Si | Shanghai | Shanghai |
| NULL | NULL | NULL | Shenzhen | Guangdong |
+------+-----------+----------+----------+-----------+
SELECT columns
FROM table1
CROSS JOIN table2;
SELECT Person.Id, Person.FirstName, Person.LastName, Address.City, Address.Province
FROM Person
CROSS JOIN Address;
// 执行结果如下:
+----+-----------+----------+----------+-----------+
| Id | FirstName | LastName | City | Province |
+----+-----------+----------+----------+-----------+
| 1 | Zhang | San | Beijing | Beijing |
| 1 | Zhang | San | Shanghai | Shanghai |
| 1 | Zhang | San | Shenzhen | Guangdong |
| 2 | Li | Si | Beijing | Beijing |
| 2 | Li | Si | Shanghai | Shanghai |
| 2 | Li | Si | Shenzhen | Guangdong |
| 3 | Wang | Wu | Beijing | Beijing |
| 3 | Wang | Wu | Shanghai | Shanghai |
| 3 | Wang | Wu | Shenzhen | Guangdong |
+----+-----------+----------+----------+-----------+