假设我有两个或更多表填充了用户,我想从同一查询中的那些表中检索所有用户.
表共享一些列,那些具有相同名称的列是我正在尝试检索的列.
就像是:
SELECT name, age FROM users1;
SELECT name, age FROM users2;
etc.
Run Code Online (Sandbox Code Playgroud)
注意:这只是一个例子而不是真正的问题.我无法将这些表合并为一个.
你可以使用UNION:
UNION用于将多个SELECT语句的结果合并到一个结果集中.
第一个SELECT语句中的列名称用作返回结果的列名称.在每个SELECT语句的相应位置中列出的选定列应具有相同的数据类型.
一个例子:
mysql> SELECT 1 as ColumnA,'a' as ColumnB
-> UNION
-> SELECT 2, 'b'
-> UNION
-> SELECT 3, 'c';
+---------+---------+
| ColumnA | ColumnB |
+---------+---------+
| 1 | a |
| 2 | b |
| 3 | c |
+---------+---------+
3 rows in set (0.05 sec)
Run Code Online (Sandbox Code Playgroud)
另请注意:
UNION的默认行为是从结果中删除重复的行.可选的DISTINCT关键字除了默认值之外没有任何影响,因为它还指定了重复行删除.使用可选的ALL关键字,不会发生重复行删除,结果包括所有SELECT语句中的所有匹配行.
一个例子:
mysql> SELECT 1 as x
-> UNION
-> SELECT 1;
+---+
| x |
+---+
| 1 |
+---+
1 row in set (0.00 sec)
mysql> SELECT 1 as x
-> UNION ALL
-> SELECT 1;
+---+
| x |
+---+
| 1 |
| 1 |
+---+
2 rows in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)