我想要mysql中的查询,可以根据第一个表中的字段值将一个表中的记录转换为另一个表中的各种记录
我有一个表Table1,其中包含诸如
ID Name Address1 Address2 Address3 Address4
1 A abc qwe wer rty
2 T xcv dfgg kkkl
3 V fgh
4 G tyn mfg uio
.
.
另一个表Table2的字段为
ID AddressNumber Address
1 1 abc
1 2 qwe
1 3 wer
1 4 rty
2 1 xcv
2 2 dfgg
2 3 kkk1
3 1 fgh
.
.
只是表之间的一对多关系,即。一个ID可以有多个地址(最多4个,至少1个)。
更新:如果要取消第一个表并将结果插入到另一个表中,则可以通过这种方式进行
INSERT INTO table2 (id, AddressNumber, Address)
SELECT id,
AddressNumber,
CASE AddressNumber
WHEN 1 THEN Address1
WHEN 2 THEN Address2
WHEN 3 THEN Address3
WHEN 4 THEN Address4
END Address
FROM table1 t CROSS JOIN
(
SELECT 1 AddressNumber UNION ALL
SELECT 2 UNION ALL
SELECT 3 UNION ALL
SELECT 4
) i
HAVING Address IS NOT NULL
ORDER BY id, AddressNumber;
结果table2
:
| ID | ADDRESSNUMBER | 地址| | ---- | ------------------- | --------- | | 1 | 1 | abc | | 1 | 2 | qwe | | 1 | 3 | wer | | 1 | 4 | rty | | 2 | 1 | xcv | | 2 | 2 | dfgg | | 2 | 3 | kkkl | | 3 | 1 | fgh | | 4 | 1 | tyn | | 4 | 2 | 制造| | 4 | 3 | uio |
这是SQLFiddle演示
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句