在PLSQL中查找优化的查询

时间:2016-03-09 04:38:52

标签: mysql plsql coding-style

在下面的数据示例中,我实时拥有相同的场景。

p1  A(True)
p1  B
p1  C
p2  B(True)
p2  C

在5行以上,有两个唯一值p1,p2.

我希望结果符合以下条件

  1. 所有具有值“A”
  2. 的行
  3. 仅在“A”不可用时才具有值“B”的行。
  4. **预期输出:

    p1 A
    p2 B**
    

    我通过长时间的查询找到了这个,有人能告诉更多优化方法吗?

2 个答案:

答案 0 :(得分:0)

它可以作为预期的输出

select unique_value,output
from unique_data
 where 
        case
                when output ='A' Then 1 
                else output ='B'
        end
group by unique_value

答案 1 :(得分:0)

您可以使用以下查询:

SELECT t.id,
         MIN(t.val)
  FROM TEST_TABLE t
 GROUP BY id
HAVING MIN(val) IN ('A', 'B');

表格数据:

id  val
-------
p1  A
p1  B
p1  C
p2  B
p2  C
p3  C
p3  D

结果:

id  val
-------
p1  A
p2  B