我的数据库中有2个表,例如:Table1: id (PK), data1
和Table2: id (PK), id_table1 (FK), data2
.我该如何进行这样的查询:
SELECT * FROM Table1, Table2 WHERE Table1.id = Table2.id_table1
GROUP BY Table1.data1
Run Code Online (Sandbox Code Playgroud)
我正在使用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);
Run Code Online (Sandbox Code Playgroud)
但是第二个arg存在问题 - 它只能使用String,而不是String [](如new String[] {"Table1","Table2}
).如何以这种方式从多个表中进行查询?
Gra*_*and 27
试试这个:
Cursor mCursor = db.rawQuery("SELECT * FROM Table1, Table2 " +
"WHERE Table1.id = Table2.id_table1 " +
"GROUP BY Table1.data1", null);
Run Code Online (Sandbox Code Playgroud)
Sim*_*iak 14
因此,当您需要JOIN
表时,您必须使用rawQuery
而不是query
.所以你的陈述
String SELECT_QUERY = SELECT * FROM Table1 t1 INNER JOIN Table2 t2 ON t1.id = t2.id GROUP BY t1.data1;
Run Code Online (Sandbox Code Playgroud)
我建议您使用,JOIN
因为它比您的方法更快,更安全.那么你的rawQuery
方法可能如下所示:
cursor = db.rawQuery(SELECT_QUERY, null);
Run Code Online (Sandbox Code Playgroud)
看一下SQLiteDatabase中的 rawQuery
问候
归档时间: |
|
查看次数: |
49370 次 |
最近记录: |