mysql 列拆分 合并 查询重复数据
表a
| id | goods_name | goods_price |
|---|---|---|
| 1 | 香蕉 | 5 元/kg |
| 2 | 苹果 | 6 元/kg |
| 3 | 橙子 | 8.5 元/kg |
| 表b | ||
| id | goods_info | |
| ---- | ---- | |
| 1 | 香蕉:5 元/kg | |
| 2 | 苹果:6 元/kg | |
| 3 | 橙子:8.5 元/kg | |
| 由表a得到表b,,,由表b得到表a |
SELECT
id,
CONCAT( goods_name, ':', goods_price ) AS goods_info
FROM
good;
SELECT
id,
SUBSTRING_INDEX( goods_info, ':', 1 ) AS goods_name,
SUBSTRING_INDEX( goods_info, ':',- 1 ) AS goods_price
FROM
good1;
| id | goods_name | goods_price |
|---|---|---|
| 1 | 香蕉 | 5 元/kg |
| 2 | 苹果 | 6 元/kg |
| 3 | 香蕉 | 5 元/kg |
| 4 | 苹果 | 6 元/kg |
| 5 | 橙子 | 8.5/kg |
| 6 | 香蕉 | 5 元/kg |
| 7 | 苹果 | 6.3 元/kg |
| 8 | 橙子 | 8.5 元/kg |
| 9 | 草莓 | 6.3 元/kg |
| 查找出重复的数据,并删除重复只保留id最小的记录 |
SELECT
*
FROM
good2
WHERE
id IN ( SELECT MIN( id ) FROM good2 GROUP BY goods_name HAVING COUNT( goods_name ) > 1 OR COUNT(goods_name) =1 );
这里是把结果已查询的形式得出来了,删除语句自行修改。
SELECT MIN( id ) FROM good2 GROUP BY goods_name HAVING COUNT( goods_name ) > 1 OR COUNT(goods_name) =1;
这语句是得出重复的且id最小的记录和不重复的记录的id。
浙公网安备 33010602011771号