sql - 创建 oracle 查询的问题

标签 sql oracle

我在提出以下查询时遇到问题。

id| prop_id| obj_id| value|
1         7       2      1
2         8       2      1
4         7       5      7 
5         8       5      12

查询的输入参数是:

  • (prop_id, value) 对的集合

我们必须选择 prop_idvalues 匹配输入参数的记录:但也有一个限制,结果记录的 obj_id 必须是相同的。如果不相同,则结果必须为空。否则它必须返回 obj_id

示例:

假设输入参数是:(7,1) 和 (8,12)。

现在有两条记录具有这样的值:first 和 last。 但是,第一条记录的 obj_id 是 2,第二条记录的 obj_id 是 5。因此,结果必须为空,因为 2!=5。

另一个例子:

假设输入参数是:(7,7) 和 (8,12)。

现在有两条记录具有这样的值:最后两条记录。 第一条记录的obj_id是5,第二条记录的obj_id也是5,所以结果一定是5。

最佳答案

试试这个

select obj_id from table 
where (prop_id=7 and value=7) or (prop_id=8 and value=12)
group by obj_id having count(*)=2 and count(distinct object_id)=1

关于sql - 创建 oracle 查询的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38651465/

相关文章:

mysql - 如何编写这个复杂的 SQL 查询?

MySQL 在结果集中添加缺失的月份

sql - Teradata/使用 UNION 合并记录不起作用

mysql - 谁能推荐一个原生支持多个数据库的良好数据建模工具/数据建模器?

java - 每次数据库退回时应用程序服务器是否都需要退回?

json - Oracle:以 JSON 格式返回行?

sql - ROWID 在内部由 SQL DBMS 索引唯一吗?

sql - 如何区分 DB2 中的两个时间戳?

mysql - 如果表中有空值,如何将MySQL列合并为一列?

java - 如何在 hibernate 中使用数据库系统日期