SQLITE:要从中选择作为子查询的表名

ut6juiuv  于 2023-02-13  发布在  SQLite
关注(0)|答案(1)|浏览(174)

我正尝试同时从多个表中选择一列的不同值。我想合并的两个查询是:
1.选择所有适当的表:

SELECT name
FROM sqlite_schema 
WHERE type='table' 
    AND name NOT LIKE 'sqlite_%';

1.从一个表中选择非重复值:

SELECT DISTINCT CATEGORY FROM my_table;

我想对第一个查询结果中的每个表名运行最后一个查询。我非常肯定这是可能的,但还没有解决。
我的想象是这样的:

SELECT DISTINCT CATEGORY 
FROM (
    SELECT name
    FROM sqlite_schema 
    WHERE type='table' 
        AND name NOT LIKE 'sqlite_%'
);

此组合查询引发错误。

3htmauhk

3htmauhk1#

使用SQLite所能做的最好的事情就是获取所需的sql语句作为字符串,然后使用您选择的编程语言执行它:

SELECT GROUP_CONCAT('SELECT CATEGORY FROM ' || name, ' UNION ') AS sql
FROM sqlite_schema 
WHERE type='table' AND name NOT LIKE 'sqlite_%';

您将得到如下字符串:

SELECT CATEGORY FROM table1 
UNION 
SELECT CATEGORY FROM table2 
UNION 
SELECT CATEGORY FROM table3

我使用UNION而不是SELECT DISTINCT
请参见demo

相关问题