从一个表中删除sql lite中的重复项

时间:2018-12-04 10:54:35

标签: sql sqlite

我想从数据库表中删除重复项。

Databasename - >  urls
Table - > url

我尝试了这个,但是没有用:

SELECT DISTINCT
 url
FROM
 urls;

表结构:

url    website    checked 

4 个答案:

答案 0 :(得分:0)

您不是SELECT来自数据库。您执行查询以从表中读取行,这就是为什么您在尝试从数据库中选择表的方式中查询错误的原因。

这不是完成的方式。您应该连接到数据库,然后从表中选择列。

假设您在存储在数据库website中的表url中存储的表urls中的列USE urls; -- for MySQL .open "urls.db" -- for SQLite 中有重复项,因此假设您使用的是命令行工具,首先要连接到数据库(如果并非如此,只需在图形查询工具中选择它即可):

SELECT DISTINCT website
FROM url;

然后从url表中选择唯一的网站,如下所示:

*

如果您需要返回唯一的行(而不是一个列值),请使用SELECT DISTINCT * FROM url;

wget

答案 1 :(得分:0)

“ url”是您的表名,因此它应位于关键字“ FROM”之后

类似这样的东西:

从网址中选择不同的*;

答案 2 :(得分:0)

您始终可以使用临时表来使自己更容易从表中真正删除重复项。

CREATE TABLE urls_temp 
LIKE urls;

INSERT INTO urls_temp
SELECT DISTINCT * 
FROM urls
GROUP BY url;

DROP TABLE urls;

ALTER TABLE urls_temp 
RENAME TO urls;

如果您只想从隐藏隐藏重复项的数据库中获取数据,则可以执行以下操作:

SELECT DISTINCT *
FROM urls;

但是,从长远来看,您可以通过在列上设置约束或使其成为防止再次输入任何重复项的主键来确保唯一性。

答案 3 :(得分:0)

SQL查询以从websites表中删除重复的url,该表必须具有唯一字段-id

DELETE FROM url 
WHERE
    id NOT IN (SELECT 
                id
              FROM
                    (SELECT 
                        id
                    FROM
                        url
                    GROUP BY website
                    ) AS x
               )