Android数据库查询跨行检查

时间:2016-11-15 23:50:33

标签: android database sqlite

我正在开发一个项目,要求我在android数据库中进行一些查询。但是,我对数据库是全新的,我对如何处理这些场景感到有些困惑。这是一个粗略的例子来展示我的问题。

对于这样的表:

表A:

--------------------------------------------------------
|  _id  |  name   |  mimetype  | data1 | data2 | data3 |
--------------------------------------------------------
|    1  |  user1  |     mime1  |  val1 |  val2 |     x |
--------------------------------------------------------
|    2  |  user1  |     mime2  |  val3 |  val4 |     y |
--------------------------------------------------------
|    3  |  user1  |     mime3  |  val8 |  val5 |     a |
--------------------------------------------------------  
|    4  |  user2  |     mime2  |  val6 |  val7 |     q |
--------------------------------------------------------
|    5  |  user2  |     mime3  |  val9 | val10 |     a |
--------------------------------------------------------
|    6  |  user3  |     mime1  | val11 | val12 |     b |
--------------------------------------------------------

基本上,我想进行查询,以便在符合以下条件时从表A中的name,data1,data2列返回数据:

  1. mimetype = mime2
  2. 表中另一行具有相同的名称,其mimetype = mime3和data3 = a
  3. 我想知道如何在一个查询中执行此操作。

    如果有人能就如何解决这个问题给出一些指示,那就太棒了!谢谢!

1 个答案:

答案 0 :(得分:0)

可以使用EXISTS operatorcorrelated subquery

来完成此操作
SELECT ...
FROM TableA
WHERE mimetype = 'mime2'
  AND EXISTS (SELECT 1
              FROM TableA AS T2
              WHERE T2.name = TableA.name
                AND T2.mimetype = 'mime3'
                AND T2.data3 = 'a');