在联接中,如何确保 Table B 中的每个组联接到 Table A 中的每一行

In a Join, How to Ensure Each Group In Table B Joins to Every Row in Table A

我的 SQL 方言是 MySQL。我正在两个表上创建视图。

我有如下所示的 TableA:

| date | value |
|------|-------|
| 1    | 100   |
| 2    | 150   |

我有如下所示的 TableB:

| date | group | name  |
|------|-------|-------|
| 1    | d     | alice |
| 1    | e     | bob   |
| 2    | d     | clark |
| 2    | e     | mick  |

我想在 date 列上进行连接并将它们组合起来,这样 B 中的每个组都可以连接到 A 上。为了更清楚,输出数据应该如下所示喜欢:

| date | group | value | name  |
|------|-------|-------|-------|
| 1    | d     | 100   | alice |
| 1    | e     | 100   | bob   |
| 2    | d     | 150   | clark |
| 2    | e     | 150   | mick  |

所以这是一个非常人为的例子,只是为了便于在 markdown 中阅读。但是关于我的实际问题的一些细节:

  1. 我有大量的组,那么多嵌套的派生表是不可行的,并且会大大减慢视图查询时间。
  2. 我需要生成两个表的某些函数的列(例如,某些输出如 value + name,这对于本示例的类型显然是无意义的)

我试过使用:

SELECT value, name, group
FROM TableA
RIGHT OUTER JOIN TableB
ON TableA.date = TableB.date

本例中的输出只采用其中一组,并丢弃其余组。

这个的语法是什么?

根据您分享的数据样本,您似乎在寻找 INNER JOIN 而不是 RIGHT JOIN

SELECT value, name, group
FROM TableA
JOIN TableB
 ON TableA.date = TableB.date