mysql - 如何通过一个请求合并 2 个表

标签 mysql sql

所以我得到了 2 个具有以下结构的表:

CREATE TABLE courses(
  id bigint not null auto_increment,
  title varchar(255) default '',
  primary key(id)
);

CREATE TABLE course_dates(
  id bigint not null auto_increment,
  course_id bigint,
  `date` date,
  key idx(course_id,date),
  primary key(id)
);

因此类(class)存储在第一个表中,类(class)日期存储在第二个表中(每个类(class)可以有无限数量的日期)

我需要使用一个查询一次获取所有类(class)行(及其所有日期)

例如,如果我有包含此类数据的表格:

courses:
id | title
1  | course#1
2  | course#2

course_dates:
id | course_id | date
1  | 1         | 2012-12-25
2  | 1         | 2012-12-27
3  | 1         | 2012-12-31
4  | 2         | 2012-12-23
5  | 2         | 2012-12-30

然后我需要这样的结果行:

id | course_id | date       | title
1  | 1         | 2012-12-25 | course#1
2  | 1         | 2012-12-27 | course#1
3  | 1         | 2012-12-31 | course#1
4  | 2         | 2012-12-23 | course#2
5  | 2         | 2012-12-30 | course#2

最佳答案

一个简单的 INNER JOIN 就可以了。

SELECT  b.*, a.title
FROM    Courses a
        INNER JOIN Courses_Dates b
            ON a.id = b.Course_ID

要了解有关联接的更多信息,请参阅下面的链接

关于mysql - 如何通过一个请求合并 2 个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14027180/

相关文章:

mysql - 在 MySQL 8.0 (Mac OSX) 中将 secure_file_priv 设置为本地文件夹

mysql - 如何使用 VB.NET 在 MySql 中分配空值

sql - 比较多个值 SQL

mysql - 如何在 SQL 中定义一个表,其中 2 个字段是非空(强制)依赖的?

mysql - 更换 table 的正确方法是什么?

sql - 如何将具有相同列的两个表转换为一个添加计数并按第三个表分组

c# - 将 BitmapImage 字节数组转换为 Image 字节数组 (WinRT -> WinForms)

mysql - SQL 查询 : Get the most expensive product ordered in each month of 2011

mysql - delphi独特的UPDATE和DELETE代码

c# - DateTime.MaxValue 在 mysql 中保存为零