SQLite SELECT 语句基于几张表的UNION 添加新的ROWID

Adding new ROWID to SQLite SELECT statement based on the UNION of several tables

考虑以下 SQLite 语句,其中每个 product_id 可能在每个 table 中至少出现一次。我们 SELECT 语句的目的是将所有 product_id 合并为一个 table.

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 列?

每个 table 都有自己的 ID INTEGER 列,但如果我们 SELECT ID 列,那么我们将在新视图中有重复的 product_id 列,单独 ID的。

添加 ROWID 不起作用,因为它 returns table 的 ID

此外,视图中没有存储行。

这在旧版本的 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;