当前位置: 首页 > 面试题库 >

如何在MySQL中联接具有不同行数的两个表?

曹高阳
2023-03-14
问题内容

我有两个要连接的表。

TABLE_A:

+-----------+-----------+---------+
| row_id    | category  | val_1   |
+-----------+-----------+---------+
| 1067      | cat1      | 6.5     |
| 2666      | test      | 6.5     |
| 2710      | cat1      | 2.1     |
| 2710      | test      | 7.1     |
| 2767      | test      | 3       |
| 71142     | cat1      | 5       |
| 50666     | other     | 6.5     |
| 71142     | other     | 1       |
| 345342    | cat1      | 6.5     |
| 345342    | test      | 2.8     |
+-----------+-----------+---------+

TABLE_B:

+-----------+-----------+
| row_id    | val_2     |
+-----------+-----------+
| 1067      | 2.0       |
| 2666      | 9         |
| 2701      | 2.2       |
| 2708      | 1         |
| 2709      | 6.5       |
| 2710      | 5.2       |
| 2765      | 6.5       |
| 2766      | 15        |
| 2767      | 8         |
| 71142     | 5         |
| 2783      | 4.5       |
| 50666     | 6.5       |
| 101588    | 9         |
| 101588    | 3         |
| 3452      | 8.0       |
| 23422     | 5         |
| 345342    | 6.5       |
+-----------+-----------+

RESULT_TABLE:

+-----------+-----------+-----------+------------+
| row_id    | val_2     | val_1     | category   |
+-----------+-----------+-----------+------------+
| 1067      | 2.0       | 6.5       | cat1       |
| 2666      | 9         | 6.5       | test       |
| 2701      | 2.2       | 2.2       | NULL       |
| 2708      | 1         | 1         | NULL       |
| 2709      | 6.5       | 1         | NULL       |
| 2710      | 5.2       | 2.1       | cat1       |
| 2710      | 5.2       | 7.1       | test       |
| 2765      | 6.5       | 1         | NULL       |
| 2766      | 15        | 1         | NULL       |
| 2767      | 8         | 3         | test       |
| 71142     | 5         | 5         | cat1       |
| 71142     | 5         | 1         | other      |
| 2783      | 4.5       | 1         | NULL       |
| 50666     | 6.5       | 6.5       | other      |
| 101588    | 9         | 1         | NULL       |
| 101588    | 3         | 1         | NULL       |
| 3452      | 8.0       | 1         | NULL       |
| 23422     | 5         | 1         | NULL       |
| 345342    | 6.5       | 6.5       | cat1       |
| 345342    | 6.5       | 2.8       | test       |
+-----------+-----------+-----------+------------+

我试图使用这样的东西:

SELECT TABLE_A.row_id, TABLE_A.category, TABLE_A.val_1, TABLE_B.val_2
FROM TABLE_A
INNER JOIN TABLE_B ON TABLE_B.row_id = TABLE_A.row_id
ORDER BY row_id;

但是,结果仅包括该row_id列存在于TABLE_A中的行。

有没有办法连接TABLE_A和TABLE_B以产生RESULT_TABLE中显示的结果?


问题答案:

如果要获得所有结果,则需要一个 外部 联接,而不是一个 内部 联接。(内部仅返回匹配的行;外部返回所有行,其中匹配的行“缝合在一起”)



 类似资料:
  • 问题内容: 我有两个表: A (col1,col2,col3,col4) B (col1,col2,col3,col4) 表 A 有4条记录(行),表 B 有6行。我想这样连接它们,例如将它们连接到 C 表中 C ( B.col1 , B.col2 ,A.col3,A.col4,B.col3,B.col4)(表中记录中的值不同,只是col1和col2包含相同的值) 当我在A.col1 = B.co

  • 问题内容: 我有两个表: 服务 ID 客户 服务 和 客户 ID 名称 电子邮件 如何列出表服务并将客户表的客户名称汇总在一起?该表中的现场客户服务在客户表上具有该客户的ID, 我感谢您的帮助 问题答案:

  • 我在数据帧df1中有一组列(col1,col2,col3)我在数据帧df2中有另一组列(col4,col5,col6)假设这两个数据帧具有相同的行数。 如何生成在df1和df2之间进行成对相关的相关表? 这张桌子看起来像 我使用,它似乎没有按要求生成表。 我已经看到了如何检查两个数据集的匹配列之间的相关性的答案?,但主要的区别在于col名称不匹配。

  • 我得到了一个表从SELECT查询1如下从SQL服务器: 我从SQL Server的SELECT query 2中获得了一个表,如下所示: 我想将这些SELECT查询加入到一个SELECT查询中,如下所示: 我试着这样: 但它不起作用,这不是我想要加入的实际表。 基本上,我想连接两个具有相同列名但它们之间没有公共值的SELECT查询。我想使用连接表中的SELECT查询。 提前谢谢你。

  • 我有两个表:p. test和q。在两个不同的数据库上测试-p和q。 这两个表都有不同的MYSQL连接,并且位于两个不同的服务器上。 我需要做一个自然连接,如下所示:http://www.microshell.com/database/sql/comparing-data-from-2-database-tables/2/ 我怎么可能做到呢?我还使用java PreparedStatement来实际

  • 问题内容: 我面对的是一个设计不当的数据库,该数据库具有非规范化的表X。该表X应该与另一个表Y具有N:M关系。 问题在于,这种关系当前为1:N,而到目前为止,在存在各种要关联的注册表的情况下,使用杰瑞操纵的解决方案是重复这些条目。 简化一下,我有这个: 我必须对这张表进行归一化处理。因此,我的第一个想法是尝试获取成对的相似注册表。像这样的东西: 做一点实验: 这导致这样的问题: 两对重复。 经过一