我正努力在标题中描述问题,更不用说寻找可能存在的解决方案了,所以请原谅,或将我指向该主题。我需要填充行,因此每个类别有4行,如下面的简化方案所示:
mysql> select * from a;
+-------+
| Num |
+-------+
| 1 |
| 2 |
| 3 |
| 4 |
+-------+
mysql> select * from b;
+----------+------+------+
| Category | Num | Data |
+----------+------+------+
| X | 2 | 10 |
| X | 3 | 12 |
| X | 4 | 8 |
| Y | 1 | 0 |
| Y | 2 | 19 |
| y | 3 | 15 |
| y | 4 | 22 |
| Z | 2 | 10 |
+----------+------+------+
我需要的结果是每个类别始终有4行(表b始终每个类别都具有Num = 1、2、3或4),为填充行设置data = null:
mysql> select * from c;
+----------+------+------+
| Category | Num | Data |
+----------+------+------+
| X | 1 | NULL |
| X | 2 | 10 |
| X | 3 | 12 |
| X | 4 | 8 |
| Y | 1 | 0 |
| Y | 2 | 19 |
| y | 3 | 15 |
| y | 4 | 22 |
| Z | 1 | NULL |
| Z | 2 | 10 |
| Z | 3 | NULL |
| Z | 4 | NULL |
+----------+------+------+
我人为地创建了表,因为我认为它可以帮助(INSERT)查询?
您需要左加入
和插入
是否需要更新现有行
You can
cross join
tablea
with all available categories in tableb
, and then bring tableb
with aleft join
.You can easily turn this to an
insert
query to another table: