mysql - 如何在 mysql 中组合或合并两个结果集?

标签 mysql

我有两个结果集 A 和 B

表A是这样的

+------+---------+------------+
| a_id | item no | total sold |
+------+---------+------------+
|    1 |     101 |         23 |
|    2 |     102 |         34 |
|    4 |     405 |         54 |
|    5 |     506 |         65 |
|    6 |     104 |         23 |
+------+---------+------------+

B表是这样的

+------+---------+----------+
| b_id | item no | location |
+------+---------+----------+
|    1 |     101 | A1       |
|    2 |     102 | A2       |
|    3 |     103 | A3       |
|    4 |     104 | A4       |
+------+---------+----------+

我想实现如下输出

+------+---------+------------+----------+
| a_id | item no | total sold | location |
+------+---------+------------+----------+
|    1 |     101 |         23 | A1       |
|    2 |     102 |         34 | A2       |
|    4 |     405 |         54 | NULL     |
|    5 |     506 |         65 | NULL     |
|    6 |     104 |         23 | A4       |
+------+---------+------------+----------+

我想将“LOCATION”列附加到表 A 并显示表 B 中存在的每个项目编号的位置值。如果表 A 中的项目编号没有位置值,则 LOCATION 值具有为 NULL(即 EMPTY)。

由于是初学者,不知道怎么实现。我尝试使用 UNION 但未能编写正确的查询

最佳答案

您正在寻找的是一个 Join。特别是 Left Outer Join,这样您就可以从左表 (TableA) 中获得所有结果,并且仅从右表 (TableB) 中获得匹配的结果。

指定连接时,您使用ON 子句告诉数据库哪些字段在表之间相关:

SELECT
    a_id,
    a.itemno,
    a.totalsold,
    b.location
FROM 
    tableA
    LEFT OUTER JOIN tableB ON
        tableA.itemno = tableB.itemno

关于mysql - 如何在 mysql 中组合或合并两个结果集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40006845/

相关文章:

mysql - update_all 与字符串连接

用于搜索列数组的 php pdo 代码

php - MySQL 存储过程和准备语句的性能比较

mysql - 在 MySQL 中如何使用继承?

php - mysql_query 没有向我的数据库中插入任何内容

mysql - Docker 无法连接到桥接口(interface)上的容器

mysql - 如何使MySQL表主键自增并带有一些前缀

php - 访问多维数组中的数据

php - 使用 MySQL DAYNAME 作为列标题,即使结果为 NULL

MySQL - 对连接表进行 AND 查询