I have a SQLite DB with a table with the following kind of data:
x
CREATE TABLE tableName
([A] int, [B] str, [C] str)
;
INSERT INTO tableName
([A], [B], [C])
VALUES
(1, AAA, AAA),
(2, AAA, BBB),
(3, ABC, DEF),
(4, BBB, AAA),
(5, CCC, DEF),
(6, DEF, EEE),
(7, DEF, DDD),
(8, DDD, BBB),
(9, EEE, AAA)
;
What I need to do is take columns B and C, create a single unduplicated list and autoincrement the primary key for the unique values. It needs to check to make sure an entry is not already existing – so the second table would be:
1 - AAA
2 - BBB
3 - ABC
4 - DEF
5 - CCC
6 - EEE
7 - DDD
I think it should be something like this:
con = sqlite3.connect('path//DBv15.db')
cur = con.cursor()
cur.execute("INSERT INTO TableB(E) SELECT DISTINCT A.A A.B FROM TableA A;")
But I’m pretty sure that’s wrong. It needs to scan the table for duplicates prior to adding a new row and I’m getting stuck. I’m using a python program to load and modify my tables.
Advertisement
Answer
Use UNION
to extract the values of the 2 columns.
INSERT INTO TableB(E)
SELECT B FROM TableA
UNION
SELECT C FROM TableA
UNION
returns distinct values so there is no need for DISTINCT
.