如何从同一查询中的不同表中检索类似的行?

Ger*_*rdo 2 mysql sql

假设我有两个或更多表填充了用户,我想从同一查询中的那些表中检索所有用户.

表共享一些列,那些具有相同名称的列是我正在尝试检索的列.

就像是:

SELECT name, age FROM users1;
SELECT name, age FROM users2;
etc.
Run Code Online (Sandbox Code Playgroud)

注意:这只是一个例子而不是真正的问题.我无法将这些表合并为一个.

Pao*_*ino 7

你可以使用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)