sql - 返回值的查询索引
问题描述
我从一个模式构建了多个查询,简单例如
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”。我想知道是否可以在不干扰我的查询的情况下完成。
解决方案
我不知道如何让它在所有这些数据库上工作,但你可以按照以下方式做一些事情
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)
您可以在选择的数据库中使用或其等效项获取结果向量。
推荐阅读
- php - 如何在没有函数的 PHP 中设置和检索动态全局变量
- python - 我正在尝试从列表中删除死链接的 id(错误 403),但我的代码总是跳过一些 id,尽管它们已经死了,但它们重新出现在列表中
- google-app-engine - 云运行是否有套接字配额?
- sql - 如何重置 SQL Server 内置函数(DAY)
- python - 用 python 运行 gdb
- go - 如何在 Go 的 envconfig 库中使用“默认”结构标记?
- c++ - 静态成员重载和覆盖如何在 C++ 结构中工作?
- recursion - XSLT/Saxon 中的尾调用优化?
- electron - “不允许加载本地资源”与电子应用程序中的文件图像 URL
- php - Codeigniter 单个数据提取错误与结果