我正在努力描述标题中的问题,更不用说寻找一个很可能存在的解决方案,所以请原谅,或指向我的线程。我需要填充行,因此在下面的简化场景中,每个类别有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 |
+----------+------+------+
我人为地创建了一个表,因为我认为它可能有助于(插入)查询?!
2条答案
按热度按时间fwzugrvs1#
你可以
cross join
表a
表中包含所有可用类别b
,然后把table拿来b
用一个left join
.你可以很容易地把它变成一个
insert
查询到另一个表:az31mfrm2#
你需要左键连接
用于插入
如果需要更新现有行