首页 > 解决方案 > 返回值的查询索引

问题描述

我从一个模式构建了多个查询,简单例如

SELECT * FROM some_table WHERE someparam = 'paramvalue1' UNION
SELECT * FROM some_table WHERE someparam = 'paramvalue2' UNION ...

查询是通过切换 someparam 值来创建的。当然,我可以使用 sql IN 运算符更改所有查询,并且它应该以相同的方式工作。但问题是我需要所有查询的数量,这给了我任何结果。因此,如果带有参数值“paramvalue2”和“paramvalue5”的查询返回给我一个结果,那么我想要一些列,例如具有值 [2,5] 的“结果”。最简单的方法是什么?我需要一个适用于 PostgreSQL、MSSQL 和 Oracle 的解决方案。

编辑:我不想弄乱我的模式查询,例如:

SELECT * FROM some_table WHERE someparam = ?

这只是一个简单的例子,查询可以有多个参数和 JOINS 等,我只想处理简单的例子。

我想要得到的结果是查询的数量,它给了我任何结果,我不需要任何值。@Jasen 给出的解决方案几乎没有问题,因为我需要做的唯一更改是将“SELECT”替换为“SELECT as results”。我想知道是否可以在不干扰我的查询的情况下完成。

标签: sqlunion

解决方案


我不知道如何让它在所有这些数据库上工作,但你可以按照以下方式做一些事情

select x.id, some_table.* from
sme_table join 
(select 1 as id, 'paramvalue1' as val UNION
 select 2, 'paramvalue2' UNION
 select 3, 'paramvalue3' UNION
 select 4, 'paramvalue4'
 ...
) x on sme_table.someparam = x.val

GROUP_CONCAT(x.id)您可以在选择的数据库中使用或其等效项获取结果向量。


推荐阅读