【发布时间】:2017-05-08 15:31:31
【问题描述】:
表架构:
+----------------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------------+---------------+------+-----+---------+-------+
| name | varchar(10) | YES | MUL | NULL | |
| slno | varchar(20) | YES | | NULL | |
| type | int(2) | YES | | NULL | |
| details | text | YES | | NULL | |
+----------------------+---------------+------+-----+---------+-------+
name、slno 和 type 一起构成一个键。
样本数据:
+---------+------+------+-------------------------------+
| name | slno | type | details |
+---------+------+------+-------------------------------+
| name1 | 11 | 1 | {"data":["feats1","feats2"] } |
| name1 | 11 | 2 | {"data":["feats1","feats2"] } |
| name1 | 12 | 1 | {"data":["feats5","feats6"] } |
| name1 | 12 | 2 | {"data":["feats5","feats6"] } |
| name2 | 11 | 1 | {"data":["feats3","feats4"] } |
| name2 | 11 | 2 | {"data":["feats3","feats4"] } |
| name2 | 12 | 1 | {"data":["feats7","feats8"] } |
| name2 | 12 | 2 | {"data":["feats10"] } |
+---------+------+------+-------------------------------+
因此,基本上对于名称 = 'name1' 的每个条目,都有一个类似的条目具有相同的 slno 但名称 = 'name2'。
我想要做的是将具有相同 slno 和类型但名称不同的行的详细信息设置为相同,即上面的示例数据集应该如下所示。 name2 行的详细信息应与 name1 行的详细信息匹配(如果它们具有相同的 slno 和类型)。
+---------+------+------+-------------------------------+
| name | slno | type | details |
+---------+------+------+-------------------------------+
| name1 | 11 | 1 | {"data":["feats1","feats2"] } |
| name1 | 11 | 2 | {"data":["feats1","feats2"] } |
| name1 | 12 | 1 | {"data":["feats5","feats6"] } |
| name1 | 12 | 2 | {"data":["feats5","feats6"] } |
| name2 | 11 | 1 | {"data":["feats1","feats2"] } |
| name2 | 11 | 2 | {"data":["feats1","feats2"] } |
| name2 | 12 | 1 | {"data":["feats5","feats6"] } |
| name2 | 12 | 2 | {"data":["feats5","feats6"] } |
+---------+------+------+-------------------------------+
我试过了,但想不出一个命令来执行上述结果。有人可以帮忙吗?
【问题讨论】:
-
那么 slno 和 details 应该形成一个单独的表吗?
-
不,我给出了示例数据(第二个表)以及它应该如何在它下面进行转换(最后一个表)
-
您如何为给定的
slno / type夫妇选择参考值?我的意思是,你为什么选择name1的值而不是name2的值? -
这是我的要求 - 将 name1 的详细信息分配给对应的 name2 的详细信息