UNION可用于合并两个子请求的行:
SELECT column_name FROM table1
UNION
SELECT column_name FROM table2;
Run Code Online (Sandbox Code Playgroud)
默认情况下,MySQL 的UNION实际上是UNION DISTINCT,这意味着行table1和 的table2共同点已被删除重复。例如:
SELECT * FROM table_1;
--------
| name |
--------
| John |
| Mary |
--------
SELECT * FROM table_2;
---------
| name |
---------
| John |
| Steve |
---------
SELECT * FROM table1
UNION
SELECT * FROM table2;
---------
| name |
---------
| John |
| Mary |
| Steve |
---------
Run Code Online (Sandbox Code Playgroud)
请注意,John在最终结果中只出现一次,因为 MySQL 会删除该行的重复项。
我们可以这么说UnionRows.length <= Table1Rows.length + Table2Rows.length。
然而,我面临着意想不到的行为。我有UnionRows.length < Table1Rows.length。这意味着当我合并两个集合时,我得到的行数比只取其中一个集合的行数要少。我希望有UnionRows.length >= Table1Rows.length和UnionRows.length >= Table2Rows.length。
这是因为UNION还会删除每个子请求中的重复行。例如:
SELECT * FROM table_1;
--------
| name |
--------
| John |
| John |
| John |
--------
SELECT * FROM table_2;
---------
| name |
---------
| Steve |
---------
SELECT * FROM table1
UNION
SELECT * FROM table2;
---------
| name |
---------
| John |
| Steve |
---------
Run Code Online (Sandbox Code Playgroud)
请注意,最终结果的行数少于table_1。
| 归档时间: |
|
| 查看次数: |
55 次 |
| 最近记录: |