удалить дубликаты в SQL Lite из одной таблицы - PullRequest
0 голосов
/ 04 декабря 2018

Я хочу удалить дубликаты из моей таблицы в базе данных.

Databasename - >  urls
Table - > url

Я пробовал это, но это не работает:

SELECT DISTINCT
 url
FROM
 urls;

Структура таблицы:

url    website    checked 

Ответы [ 4 ]

0 голосов
/ 04 декабря 2018

SQL-запрос для удаления дубликата websites из таблицы url, таблица должна иметь уникальное поле - id

DELETE FROM url 
WHERE
    id NOT IN (SELECT 
                id
              FROM
                    (SELECT 
                        id
                    FROM
                        url
                    GROUP BY website
                    ) AS x
               )   
0 голосов
/ 04 декабря 2018

Здесь 'url' - это имя вашей таблицы, поэтому оно должно идти после ключевого слова 'FROM'

Что-то вроде этого:

выбрать отличный * из URL;

0 голосов
/ 04 декабря 2018

Вы всегда можете использовать временную таблицу, чтобы вам было проще фактически удалить дубликаты из таблицы.

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;

Однако в долгосрочной перспективе вы можете обеспечить уникальность, наложив ограничение на столбец или сделав его первичным ключом, чтобы больше не вводить дубликаты в первую очередь.

0 голосов
/ 04 декабря 2018

Вы не SELECT из базы данных.Вы выполняете запрос для чтения строк из таблицы, поэтому ваш запрос неверен в том, как вы пытаетесь выбрать таблицу из базы данных.

Это не так, как это делается.Вы должны подключиться к базе данных и затем выбрать столбцы из таблицы.

Допустим, у вас есть дубликаты в столбце website, хранящиеся в таблице url, которые находятся в базе данных urls, поэтому сначала вы должны подключиться кбаза данных, если вы используете инструмент командной строки (если это не так, просто выберите его в графическом инструменте запросов):

USE urls; -- for MySQL
.open "urls.db" -- for SQLite

Затем выберите уникальные веб-сайты из таблицы URL, например:

SELECT DISTINCT website
FROM url;

Если вам нужно вернуть уникальные строки (не значения одного столбца), используйте *:

SELECT DISTINCT *
FROM url;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...