查询跨行的条件

时间:2015-07-07 07:55:27

标签: sql postgresql postgresql-9.4

我有一张这样的表

     Uri myUri = Uri.parse("file://" + path);
     emailIntent.putExtra(Intent.EXTRA_STREAM, myUri);

在此表中,我有一些重复的条目,因为我需要存储VIP价格。如果是正常人访问,我需要显示

id |   item |  price | vip
---+--------+--------+-----
0  |  tv    | 2000   | NULL
1  |  tv    | 2500   | TRUE
2  |  camera| 3000   | NULL
3  |  camera| 3500   | TRUE
4  |  phone | 1000   | NULL
5  |  pen   | 2      | NULL

如果贵宾来了,那么我应该显示价格

item  | price
------+---------
tv    | 2000
camera| 3000
phone | 1000
pen   | 2

最后一列是布尔值。

我需要查询来获取物品。请帮助获取此查询。

2 个答案:

答案 0 :(得分:4)

普通客户:

select item, price
from tablename t1
where vip is true
   or not exists (select 1 from tablename t2
                  where t1.item = t2.item
                    and vip is true)

vip客户:

{{1}}

答案 1 :(得分:0)

您只需要一个WHERE子句

 SELECT price from *** WHERE ((VarVip = true AND vip IS NOT NULL) OR (vip IS NULL)) and item = ...

我无法测试它,但如果存在,则应打印VIP价格,否则打印正常价格。如果它没有(我怀疑)你仍然可以在where子句中添加这样的测试:

exists(SELECT price from *** where vip IS NOT NULL and item = ...)