使用SQLiteDatabase从多个表中查询SQLite

我的数据库中有2个表,例如: Table1: id (PK), data1Table2: id (PK), id_table1 (FK), data2 。 我该如何进行这样的查询:

 SELECT * FROM Table1, Table2 WHERE Table1.id = Table2.id_table1 GROUP BY Table1.data1 

我正在使用SQLiteDatabase及其query()方法。

 Cursor mCursor = db.query(true, new String[] {"Table1","Table2"}, new String[] {"Table1.id","data1", "Table2.id", "id_table1", "data2"}, "Table1.id=Table2.id_table1", null, "Table1.data1", null,null,null); 

但是第二个arg存在问题 – 它只能使用String,而不是String [](比如new String[] {"Table1","Table2} )。我应该怎样做才能以这种方式从多个表中进行查询?

尝试这个:

 Cursor mCursor = db.rawQuery("SELECT * FROM Table1, Table2 " + "WHERE Table1.id = Table2.id_table1 " + "GROUP BY Table1.data1", null); 

因此,当您需要JOIN Tables时,您必须使用rawQuery而不是query 。 所以你的陈述

 String SELECT_QUERY = SELECT * FROM Table1 t1 INNER JOIN Table2 t2 ON t1.id = t2.id GROUP BY t1.data1; 

我建议您使用JOIN因为它比您的方法更快,更安全。 那么你的rawQuery方法看起来像这样:

 cursor = db.rawQuery(SELECT_QUERY, null); 

看一下SQLiteDatabase中的rawQuery

问候