Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / SQLite Новый топик    Ответить
 Объединение двух полей, удаление дубликатов  [new]
cobain31
Member

Откуда:
Сообщений: 6
Добрый день, упрощу описание максимально чтоб не усложнять вопрос лишними деталями.
Есть таблица с двумя полями,

CREATE TABLE `main` (
`data` TEXT UNIQUE,
`temp` TEXT
);

data - содержит уникальные значения
temp - временно принимает значения, которые надо обработать следующим образом:

Необходимо проверить наличие значений поля temp в поле data,
при наличии значения temp в поле data надо удалить значение из temp.
при отсутствии значения temp в поле data надо добавить его в data, и оставить в temp (не удалять).

Подскажите пожалуйста как сделать, пытался сам, но ничего даже близко не получилось, в sql не силен..
6 дек 18, 11:58    [21755600]     Ответить | Цитировать Сообщить модератору
 Re: Объединение двух полей, удаление дубликатов  [new]
pit_alex
Member

Откуда: Kharkov
Сообщений: 657
cobain31,

если при вставке записи то тригером
6 дек 18, 13:39    [21755754]     Ответить | Цитировать Сообщить модератору
 Re: Объединение двух полей, удаление дубликатов  [new]
pit_alex
Member

Откуда: Kharkov
Сообщений: 657
cobain31,

или это надо сделать для всех су шествующих записей?
6 дек 18, 13:40    [21755755]     Ответить | Цитировать Сообщить модератору
 Re: Объединение двух полей, удаление дубликатов  [new]
cobain31
Member

Откуда:
Сообщений: 6
pit_alex,

не, я пишу свой скрипт на питоне, который использует бд sqlite для хранения данных. Скрипт импортирует данные во временный столбец (хотя сейчас уже понимаю что надо было для этого отдельную таблицу делать). И далее я хотел sql запросом делать объединение таблиц. Но запрос никак не могу сформировать. Вот на каком этапе сейчас бьюсь, но оно не работает :

INSERT INTO main ('out') VALUES (SELECT DISTINCT ('temp') FROM main WHERE ('temp') NOT IN (SELECT ('data') FROM main));


По идее код должен в отдельный столбец вставлять строки из temp, если их нету в столбце data. Но надо переделать на отдельные таблицы судя по всему
6 дек 18, 14:44    [21755859]     Ответить | Цитировать Сообщить модератору
 Re: Объединение двух полей, удаление дубликатов  [new]
cobain31
Member

Откуда:
Сообщений: 6
Переделал на 3 разные таблицы (main, temp, out) в каждом по 1 полю (data). Но не работает, подскажите что тут не так?

INSERT INTO out ('data') VALUES (SELECT DISTINCT ('data') FROM main EXCEPT SELECT ('data') FROM temp);
6 дек 18, 15:07    [21755902]     Ответить | Цитировать Сообщить модератору
 Re: Объединение двух полей, удаление дубликатов  [new]
pit_alex
Member

Откуда: Kharkov
Сообщений: 657
cobain31,

дык вроде и первый запрос работает, а что не так?
6 дек 18, 15:15    [21755916]     Ответить | Цитировать Сообщить модератору
 Re: Объединение двух полей, удаление дубликатов  [new]
cobain31
Member

Откуда:
Сообщений: 6
near "SELECT": syntax error
6 дек 18, 15:17    [21755923]     Ответить | Цитировать Сообщить модератору
 Re: Объединение двух полей, удаление дубликатов  [new]
pit_alex
Member

Откуда: Kharkov
Сообщений: 657
cobain31,

INSERT INTO main(data) SELECT temp FROM main WHERE temp NOT IN (SELECT data FROM main)
6 дек 18, 15:19    [21755925]     Ответить | Цитировать Сообщить модератору
 Re: Объединение двух полей, удаление дубликатов  [new]
cobain31
Member

Откуда:
Сообщений: 6
pit_alex,

спасибо!!! но я вот одновременно додумался до аналогичного запроса, работает)
INSERT INTO out('data') SELECT data FROM temp EXCEPT SELECT data FROM main;


а есть вариант в этом же запросе сделать так что бы эта выборка одним скопировалась дополнительно в другую таблицу out?
6 дек 18, 15:43    [21755974]     Ответить | Цитировать Сообщить модератору
 Re: Объединение двух полей, удаление дубликатов  [new]
pit_alex
Member

Откуда: Kharkov
Сообщений: 657
cobain31,

по моему SQLite такого не позволяет, но можно добавить триггер и в нем вставлять куда угодно
6 дек 18, 16:15    [21756038]     Ответить | Цитировать Сообщить модератору
 Re: Объединение двух полей, удаление дубликатов  [new]
cobain31
Member

Откуда:
Сообщений: 6
pit_alex,

похоже что да. сделал несколькими запросами) Спасибо за помощь!
6 дек 18, 17:39    [21756173]     Ответить | Цитировать Сообщить модератору
Все форумы / SQLite Ответить