Как выбрать конкретные строки в новую таблицу? - PullRequest
0 голосов
/ 01 октября 2018

Я использую SQLite 3. У меня есть таблица MyTable, как показано ниже:

Create table mytable (ID as INTEGER, OrderID as INTEGER);

Insert into mytable (ID, OrderID) values (1, 1);
Insert into mytable (ID, OrderID) values (1, 2);
Insert into mytable (ID, OrderID) values (2, 1);
Insert into mytable (ID, OrderID) values (2, 3);
Insert into mytable (ID, OrderID) values (3, 1);

Для двух строк с одинаковым идентификатором, но разным OrderID, например (1, 1) и (1, 2),мы назовем их дублирующимися строками.

Теперь мне нужно выбрать все дублирующиеся строки и поместить их в новую таблицу с именем MyDupTable.Для приведенного выше примера MyDupTable должен содержать:

(1, 1);
(1, 2);
(2, 1);
(2, 3);

Поэтому я использую следующее утверждение:

Select * into MyDupTable from MyTable group by ID having Count(ID) > 1;

Но sqlite выдает сообщение об ошибке «около« в », синтаксическая ошибка»,почему?

Спасибо

Ответы [ 2 ]

0 голосов
/ 01 октября 2018

Я бы использовал оператор INSERT INTO. . . с EXISTS:

INSERT INTO MyDupTable (ID, orderid)
     SELECT ID, orderid
     FROM mytable mt
     WHERE EXISTS (SELECT 1 FROM mytable mt1 WHERE mt1.ID = mt.ID AND mt.orderid <> mt1.orderid);   

Примечания:

  • Всегда указывайте имена всех столбцов при использовании оператора INSERT INTO.
0 голосов
/ 01 октября 2018

Вы можете сделать это с помощью sub-query, подзапрос выберет все дубликаты идентификатора, а затем с помощью in выбрать остаток столбцов из таблицы и вставить его в новую таблицу

insert into MyDupTable 
select * from mytable where ID in(
    select ID from mytable
     group by ID
    having Count(*) > 1
    )

вы можете создать таблицу, используя существующую таблицу

CREATE TABLE MyDupTable AS 
   select * from mytable where ID in(
        select ID from mytable
         group by ID
        having Count(*) > 1
        )

ваш анализ запросов

Select * into MyDupTable from MyTable group by ID having Count(ID) > 1;

1.вы использовали группу по идентификатору, но не нашли ни одного столбца выбора из MyTable, числоиспользуемый в выделении столбец должен использоваться в группе по

в документах таблицы вставки sql lite
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...