我想转换一个由实际值组成的IN子句,而不是使用join子句的子查询。
select max(c1) from t1 where t1.id IN (
1,2,3,4......1000
)
and t1.c2 = something
如何将该查询转换为联接子句?
答案 0 :(得分:3)
您可以使用内联VALUES
来构建数据集,并使用别名来赋予该数据集以及名称和列名。
SELECT
yourData.id, map.b
FROM
yourData
INNER JOIN
(
VALUES
(1,2),
(2,4),
(3,8)
)
map(a,b)
ON map.a = yourData.a
答案 1 :(得分:2)
如果您的序列呈线性增长,请使用generate_series
select max(c1) from t1
join generate_series(1, 1000) ids on t1.id = ids
where t1.c2 = something
答案 2 :(得分:0)
您可以尝试以下操作
with cte as
(
select 1 as col union all
select 2 union all
select 3 union all
select 4 union all
---------
-------
select 1000
) select max(t1.c1) from
cte join t1 on cte.col=t1.id where t1.c2=something