是否可以使用 sqlite 創建這樣一個查詢,該查詢在一個表上回圈選擇一行,我可以將其用作另一個(復雜)查詢及其子查詢的引數?這是我的意思的簡短演示。
有一個標準表:
create temp table filter as
select 'foo' name, ' 1 day' offset union
select 'bar' name, ' 3 day' offset union
select 'baz' name, ' 6 day' offset;
這是包含資料的表:
create temp table data as
select 'foo' name, '2021-12-05' day union
select 'bar' name, '2021-12-06' day union
select 'foo' name, '2021-12-07' day union
select 'baz' name, '2021-12-08' day union
select 'baz' name, '2021-12-09' day union
select 'bar' name, '2021-12-10' day;
現在,我想遍歷過濾器行并使用每一行查詢第二個表中的資料,然后查詢union所有結果。顯然,下面的偽代碼不起作用:
foreach filter
previous result
union all
select *
from data
where date(day) = date('2021-12-07', filter.offset)
我正在考慮使用遞回 CTE,但是當涉及到另一張桌子時,我不確定如何將它放在一起。
uj5u.com熱心網友回復:
您所描述的是兩個表的連接:
SELECT d.*
FROM data d INNER JOIN filter f
ON d.name = f.name AND d.day = date('2021-12-07', f.offset);
由于可能相關的 2 列的相似性,我d.name = f.name在ON子句中添加了條件。
如果實際上不需要,則洗掉該條件。
請參閱演示。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/382370.html
