当前位置: 首页 > 知识库问答 >
问题:

用于组合两个表的MySQL查询

花俊雄
2023-03-14

我试图获得一个MySQL查询来组合两个表。两个表都有一个user_id和date列,其他列对于每个表都是唯一的。我想要完成的事情最好用一个图像(imgur)来解释。我试过各种连接和联合,但不能得到正确的组合。我也尝试过搜索stackoverflow,但是我可能没有使用正确的术语来进行搜索。

表格的文字说明:

tablel 
user_id date       animals 
1       9/15/2020  Lion 
2       8/11/2020  Tiger 
3       12/12/2020 Bear 

table2 
user_id date      fruit 
1       7/7/2020  apple 
2       6/5/2020  pear 
4       3/8/2020  peach

output 
user_id date        animals fruit 
1       9/15/2020   Lion 
1       7/7/2020            apple 
2       8/11/2020   Tiger 
2       6/5/2020            pear
3       12/12/2020  Bear 
4       3/8/2020            peach 

共有3个答案

丁慈
2023-03-14
-- use test;
-- drop table if exists table1;
create table table1(user_id int, `date` date, animals varchar(10));
insert into table1 values(1,'2020/09/15','Lion');
insert into table1 values(2,'2020/11/08','Tiger');
insert into table1 values(3,'2020/12/12','Bear');

-- drop table if exists table2;
create table table2(user_id int, `date` date, fruit varchar(10));
insert into table2 values(1,'2020/07/07','apple');
insert into table2 values(2,'2020/05/06','pear');
insert into table2 values(4,'2020/08/03','peach');

select 
  user_id,
  `date`,
  animals,
  '' as fruit
from table1
union all
select
  user_id,
  `date`,
  '',
  fruit
from table2
order by user_id,`date`;

输出:

+ ------------ + --------- + ------------ + ---------- +
| user_id      | date      | animals      | fruit      |
+ ------------ + --------- + ------------ + ---------- +
| 1            | 2020-07-07 |              | apple      |
| 1            | 2020-09-15 | Lion         |            |
| 2            | 2020-05-06 |              | pear       |
| 2            | 2020-11-08 | Tiger        |            |
| 3            | 2020-12-12 | Bear         |            |
| 4            | 2020-08-03 |              | peach      |
+ ------------ + --------- + ------------ + ---------- +
微生俊捷
2023-03-14

您也可以尝试完全外部联接:

SELECT user_id, date, animals, '' as fruit
FROM table1
FULL OUTER JOIN table2
ON table1.user_id = table2.user_id AND table1.date = table2.date
端木高卓
2023-03-14

有了工会,你就能做到这一点

SELECT user_id, date, animals, fruit FROM
(
      SELECT user_id, date, animals, '' as fruit
        FROM table1
      UNION ALL
      SELECT user_id, date, '', fruit
        FROM table2
 ) t
 ORDER BY user_id, animals
 类似资料:
  • 仅使用一个组合查找表(mySQL数据库)来存储表之间的“链接”比使用单独的查找表有大的缺点(可能在查询速度等方面)吗?我之所以这么问,是因为在我的项目场景中,我最终会得到超过100个单独的查找表,我认为设置和维护这些表将会有很多工作。但为了更简单地举例,这里是一个仅包含4个表的简化场景: 表:教师 表:学生 表:类 表:languageSpoken ========================

  • 问题内容: 我想知道如何用php中的两个表进行查询? 我有这个查询 但是我想将col_Autor与另一个表(tb_autores)中的au_Nombre进行比较,并从中获取au_Photo和其他值,我该怎么做? 问题答案: 通过在FROM子句中指定两个表并在where子句中建立关系,可以在不使用JOIN关键字的情况下进行简单的联接查询。 例如

  • 问题内容: 结合这两个查询的正确语法是什么? 和 我试过了: 但我收到“ UNION和ORDER BY的用法不正确”。 编辑 此外,我希望结果在一行中返回。这样我就可以访问php中的值,例如 根据西蒙的建议,我不应该使用UNION,因为我想返回一行数据 问题答案: 您不能先进入,然后再进入。 编辑 但是你可以 将ORDER BY或LIMIT应用于单个SELECT,将子句放在包围SELECT的括号内

  • 问题内容: 如何合并结构相同的两个MySQL表? 这两个表的主键将发生冲突,因此我考虑了这一点。 问题答案: 您也可以尝试: 这允许table_1中的行取代table_2中具有匹配主键的行,同时仍插入具有新主键的行。 或者, 将使用来自表_2的相应行更新表_1中已经存在的行,同时插入具有新主键的行。

  • 大家好,我正在学习如何使用MySQL和Node JS,我正在尝试找到一个混合两个表的查询。如果我得到一个表“users”,其中有列“userid”、“userimage”,另一个表“comments”,其中有列“commentID”、“comment”、“commentuserid”、“threadid”。你知道我是否可以添加用户的图片谁评论在这个查询的结果请?

  • 问题内容: 我正在运行此查询 但这不是我想要的结果,它返回多行。 我的一张桌子看起来像这个名字: 另一个表看起来像这个名字: 我如何使其选择查询,以便可以从两个表中获取与之相关的所有值,并使它看起来像这样 所需的输出: 谢谢!(提前!) 问题答案: 为您提供所需的输出(但这并不灵活,因此,如果添加要输出的更多详细信息,将无法进行更改而不进行更改):-

  • 问题内容: 我有一个看起来像这样的表: 这就是我想要做的: 如果号码已经在数据库中,请不要插入新记录。 如果编号不在数据库中,但名称在数据库中,则创建一个新名称并将其插入。因此,例如,如果我有一个包含for和for的记录,我不想插入它,但是如果我得到一个包含for和for的记录,我会插入and 。我本来要检查重复项,例如: 有没有办法将两个语句组合在一起? 问题答案: 您的问题实际上有两个问题。第

  • 本文向大家介绍MySQL查询将两列合并为一个列?,包括了MySQL查询将两列合并为一个列?的使用技巧和注意事项,需要的朋友参考一下 您可以为此使用功能。在该函数中,它从列中返回第一个NON NULL值。为了理解这个概念,让我们首先创建一个演示表 使用insert命令在表中插入一些记录。查询如下- 现在,您可以使用select语句显示表中的所有记录。查询如下- 以下是输出 这是将两列合并为一个查询的