Любой способ найти общие столбцы в SQL и использовать результат для вставки в найденные столбцы? - PullRequest
0 голосов
/ 02 октября 2019

Я использую sqlite и хочу посмотреть, могу ли я сопоставить столбец между двумя таблицами, а затем вставить значения из одной таблицы в другую на основе сопоставленных столбцов.

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

Схема:

employee (ID, name, age, salary)
customer (ID, name, age, tot_spent, last_shopped)

Таблицы:

Сотрудник:

 1 | John  | 21 | 21000 |
 2 | David | 35 | 30000 |

Заказчик:

 3 | Larry | 17 | 356   | 4-5-2010 |
 4 | Mary  | 41 | 70    | 5-7-2012 |

Запрос SQL:

/*find common column names between table "employee" and "customer"*/
WITH common(col) AS
(
    SELECT p.name AS columnName
    FROM sqlite_master m
    LEFT OUTER JOIN pragma_table_info((m.name)) p ON m.name = 'employee' OR m.name = 'customer'
    GROUP BY columnName
    HAVING COUNT(columnName) > 1
)
/*Insert*/
INSERT INTO customer(common.col) 
    SELECT common.col
    FROM employee;

Это, очевидно, не работает, но это то, чего я пытаюсь достичь. Как мне попытаться реализовать что-то подобное или есть лучшее решение, которого мне не хватает?

Я хотя бы хочу выяснить, могу ли я получить что-то вроде:

-customer-
 1 | John  | 21 | null  | null     |
 2 | David | 35 | null  | null     |
 3 | Larry | 17 | 356   | 4-5-2010 |
 4 | Mary  | 41 | 70    | 5-7-2012 |

Без необходимости явно указывать имена столбцов или создавать новую таблицу, но при этом использовать только sqlite.

...