选择除-1以外的值,而不是与负值相同的值

时间:2014-12-10 15:57:20

标签: mysql

ID| uid | val1 | val2
---------------------
1 | 80 | -1  | -1 
2 | 81 | 45  | -1
3 | 82 | 99  | -1
4 | 81 | -45 | -1
5 | 82 | 99  | 50
6 | 83 | 55  | 70
7 | 83 | -55 | -70
8 | 81 | 41  | -1
9 | 83 | -1  | 80

不要选择以下内容: - 除了-1 - 如果有相同的正负值(带减号 - 例如在此表中为45,负值为-45)等等

你好我有这张桌子。如果我想得到这个,请问如何编写查询?

[1]
  uid=81
  val1=41
  val2=

[2]
  uid=82
  val1=99
  val2=50

[3]
  uid=83
  val1=
  val2=80

1 个答案:

答案 0 :(得分:0)

这样的事情能做你想做的吗?

select t.*
from table t
where val1 <> -1 and val2 <> -1 and
      not exists (select 1
                  from table t2
                  where (t.val1 = -1 or t2.val1 = - t.val1) and
                        (t.val2 = -1 or t2.val2 = - t.val2)
                 );

我认为密钥是not exists来过滤掉负配对行。