Добавление нового ROWID в оператор SQLite SELECT на основе объединения нескольких таблиц - PullRequest
0 голосов
/ 13 ноября 2018

Рассмотрим следующий оператор SQLite, где каждый product_id может появляться хотя бы один раз в каждой таблице. Цель нашего оператора SELECT - объединить все product_id в одну таблицу.

SELECT product_id
  FROM product_id_table_UK
UNION
SELECT product_id
  FROM product_id_table_DE
UNION
SELECT product_id
  FROM product_id_table_ES
UNION
SELECT product_id
  FROM product_id_table_IT
UNION
SELECT product_id
  FROM product_id_table_FR

Как добавить столбец ID INTEGER к полученному представлению?

Каждая таблица имеет свой собственный столбец ID INTEGER, но если мы столбец SELECT ID, то у нас будут дубликаты столбцов product_id в новом представлении с отдельными ID.

Добавление ROWID не работает, поскольку возвращает ID таблиц.

Кроме того, в представлениях не хранятся строки.

1 Ответ

0 голосов
/ 13 ноября 2018

Это больно в старых версиях SQLite (до row_number() дней). Вы можете сделать:

with p as (
      SELECT product_id
      FROM product_id_table_UK
      UNION
      SELECT product_id
      FROM product_id_table_DE
      UNION
      SELECT product_id
      FROM product_id_table_ES
      UNION
      SELECT product_id
      FROM product_id_table_IT
      UNION
      SELECT product_id
      FROM product_id_table_FR
     )
select p.*,
       (select count(*) from p p2 where p2.product_id <= p.product_id)
from p;
...