请考虑以下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
。
此外,视图中没有存储行。
答案 0 :(得分:1)
这在旧版本的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;