我有一个包含以下列的表格:
URL_ID
URL_ADDR
URL_Time 我想URL_ADDR使用MySQL查询删除列上的重复项。
不用编程就可以做这样的事情吗?
考虑以下测试案例:
CREATE TABLE mytb (url_id int, url_addr varchar(100));
INSERT INTO mytb VALUES (1, 'www.google.com'); INSERT INTO mytb VALUES (2, 'www.microsoft.com'); INSERT INTO mytb VALUES (3, 'www.apple.com'); INSERT INTO mytb VALUES (4, 'www.google.com'); INSERT INTO mytb VALUES (5, 'www.cnn.com'); INSERT INTO mytb VALUES (6, 'www.apple.com'); 我们的测试表现在包含:
SELECT * FROM mytb; +--------+-------------------+ | url_id | url_addr | +--------+-------------------+ | 1 | www.google.com | | 2 | www.microsoft.com | | 3 | www.apple.com | | 4 | www.google.com | | 5 | www.cnn.com | | 6 | www.apple.com | +--------+-------------------+ 5 rows in set (0.00 sec) 然后,我们可以使用多表DELETE语法,如下所示:
DELETE t2 FROM mytb t1 JOIN mytb t2 ON (t2.url_addr = t1.url_addr AND t2.url_id > t1.url_id); ...这将删除重复的条目,仅保留基于以下内容的第一个网址url_id:
SELECT * FROM mytb; +--------+-------------------+ | url_id | url_addr | +--------+-------------------+ | 1 | www.google.com | | 2 | www.microsoft.com | | 3 | www.apple.com | | 5 | www.cnn.com | +--------+-------------------+ 3 rows in set (0.00 sec)来源:stack overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。