MariaDB [guanzhi_removeDuplicate]> SHOW COLUMNS from selection; +————+————-+——+—–+———+—————-+ | Field | Type | Null | Key | Default | Extra | +————+————-+——+—–+———+—————-+ | id | int(10) | NO | PRI | NULL | auto_increment | | staff_id | int(10) | NO | | NULL | | | car_sn | varchar(10) | NO | | NULL | | | bid_price | int(10) | NO | | NULL | | | created_at | int(10) | NO | | NULL | | | sequence | int(10) | NO | | NULL | | +————+————-+——+—–+———+—————-+ 6 rows in set (0.00 sec) MariaDB [guanzhi_removeDuplicate]> SELECT * from selection; 。。。 | 2901 | 302 | 07 | 77000 | 1453346912 | 7 | | 2902 | 302 | 08 | 77000 | 1453346912 | 8 | 。。。 | 2940 | 302 | 40 | 78102 | 1453346943 | 40 | |
附上此处部分的,比较完整的数据:
| 2529 | 82 | 11 | 84816 | 1453276140 | 11 | | 2530 | 82 | 12 | 84816 | 1453276140 | 12 | | 2531 | 82 | 23 | 84002 | 1453276140 | 23 | | 2532 | 82 | 26 | 91600 | 1453276140 | 26 | | 2533 | 82 | 27 | 91600 | 1453276141 | 27 | 。。。 | 2758 | 27 | 82 | 74009 | 1453343891 | 82 | | 2759 | 27 | 83 | 69999 | 1453343891 | 83 | 。。。 | 2912 | 302 | 08 | 77000 | 1453346933 | 8 | | 2913 | 302 | 23 | 78102 | 1453346933 | 23 | 。。。 | 3068 | 269 | 74 | 51021 | 1453353548 | 74 | | 3069 | 269 | 77 | 41280 | 1453353548 | 77 | +——+———-+——–+———–+————+———-+ 3067 rows in set (0.01 sec) MariaDB [guanzhi_removeDuplicate]> SELECT * from selection; |
很明显,对于同样的数据:
| 2901 | 302 | 07 | 77000 | 1453346912 | 7 | | 2902 | 302 | 08 | 77000 | 1453346912 | 8 | | 2903 | 302 | 23 | 78102 | 1453346912 | 23 | | 2904 | 302 | 24 | 78102 | 1453346912 | 24 | | 2905 | 302 | 26 | 84102 | 1453346912 | 26 | | 2906 | 302 | 29 | 84100 | 1453346912 | 29 | | 2907 | 302 | 30 | 84100 | 1453346912 | 30 | | 2908 | 302 | 31 | 84100 | 1453346912 | 31 | | 2909 | 302 | 32 | 84100 | 1453346912 | 32 | | 2910 | 302 | 40 | 78102 | 1453346912 | 40 | |
重复了好几次。
此处需要找出来,对于:
同一个人staff_id,此处的302,
不同的车car_sn,此处的07,08,23,24等等
不同的报价,此处的77000,78102,84102
只允许报一次
-》把多余的,其他部分的:
| 2901 | 302 | 07 | 77000 | 1453346912 | 7 | | 2902 | 302 | 08 | 77000 | 1453346912 | 8 | | 2903 | 302 | 23 | 78102 | 1453346912 | 23 | | 2904 | 302 | 24 | 78102 | 1453346912 | 24 | | 2905 | 302 | 26 | 84102 | 1453346912 | 26 | | 2906 | 302 | 29 | 84100 | 1453346912 | 29 | | 2907 | 302 | 30 | 84100 | 1453346912 | 30 | | 2908 | 302 | 31 | 84100 | 1453346912 | 31 | | 2909 | 302 | 32 | 84100 | 1453346912 | 32 | | 2910 | 302 | 40 | 78102 | 1453346912 | 40 | |
都删除掉。
搜:
mysql remove duplicate
mysql remove duplicate record
mysql remove duplicate values
sql – Remove duplicate rows in MySQL – Stack Overflow
sql – Delete all Duplicate Rows except for One in MySQL? – Stack Overflow
How to delete duplicates on a MySQL table? – Stack Overflow
MariaDB [guanzhi_removeDuplicate]> ALTER IGNORE TABLE selection ADD UNIQUE (staff_id, car_sn, bid_price); Query OK, 3067 rows affected (3.22 sec) Records: 3067 Duplicates: 794 Warnings: 0 MariaDB [guanzhi_removeDuplicate]> |
去看看剩余的数据,果然清除了重复的了:
| 2901 | 302 | 07 | 77000 | 1453346912 | 7 | | 2902 | 302 | 08 | 77000 | 1453346912 | 8 | | 2903 | 302 | 23 | 78102 | 1453346912 | 23 | | 2904 | 302 | 24 | 78102 | 1453346912 | 24 | | 2905 | 302 | 26 | 84102 | 1453346912 | 26 | | 2906 | 302 | 29 | 84100 | 1453346912 | 29 | | 2907 | 302 | 30 | 84100 | 1453346912 | 30 | | 2908 | 302 | 31 | 84100 | 1453346912 | 31 | | 2909 | 302 | 32 | 84100 | 1453346912 | 32 | | 2910 | 302 | 40 | 78102 | 1453346912 | 40 | | 2971 | 108 | 33 | 81399 | 1453347864 | 33 | | 2972 | 108 | 36 | 74678 | 1453347864 | 36 | | 2973 | 108 | 37 | 73003 | 1453347864 | 37 | |
附上此处,去重后的,比较完整的数据:
| 2115 | 164 | 71 | 73699 | 1453274439 | 71 | | 2116 | 164 | 72 | 68299 | 1453274439 | 72 | 。。。 | 3067 | 269 | 64 | 35321 | 1453353548 | 64 | | 3068 | 269 | 74 | 51021 | 1453353548 | 74 | | 3069 | 269 | 77 | 41280 | 1453353548 | 77 | +——+———-+——–+———–+————+———-+ 2273 rows in set (0.01 sec) MariaDB [guanzhi_removeDuplicate]> |
然后再去看表的结构,好像看不出来,那三个key是unique的:
MariaDB [guanzhi_removeDuplicate]> SHOW COLUMNS from selection; +————+————-+——+—–+———+—————-+ | Field | Type | Null | Key | Default | Extra | +————+————-+——+—–+———+—————-+ | id | int(10) | NO | PRI | NULL | auto_increment | | staff_id | int(10) | NO | MUL | NULL | | | car_sn | varchar(10) | NO | | NULL | | | bid_price | int(10) | NO | | NULL | | | created_at | int(10) | NO | | NULL | | | sequence | int(10) | NO | | NULL | | +————+————-+——+—–+———+—————-+ 6 rows in set (0.01 sec) MariaDB [guanzhi_removeDuplicate]> |
现在想要确定的知道和查询到,到底这三个key,是不是的确已经是加了Unique属性了。
所以问题转化为:
[已解决]如何确定MySQL的表中哪些key是unique的
[总结]
此处通过:
mysql -u root -p 输入密码:xxx 选择数据库:use guanzhi_removeDuplicate 去除重复项:ALTER IGNORE TABLE selection ADD UNIQUE (staff_id, car_sn, bid_price); |
即可去重。
转载请注明:在路上 » [已解决]去除MySQL中某个表中某几列重复的数据