我想查詢我的Android SQLite數據庫使用以下INTERSECT查詢,但它崩潰。這兩個選擇查詢自己的正常工作和他們肯定是產生匹配的結果,所以我不明白爲什麼相交聲明將無法工作:如何編寫Android SQLite數據庫INTERSECT查詢
SQLiteDatabase db = (new DatabaseHelper(this)).getWritableDatabase();
Cursor cursor = db.rawQuery("SELECT tblsyndromes._id, synname" +
" FROM tblsyndromes JOIN tblsymsynlink ON tblsymsynlink.synId = tblsyndromes._id" +
" WHERE tblsymsynlink.symId = "+intCondition+" " +
" INTERSECT SELECT tblsyndromes._id, synname FROM tblsyndromes JOIN synconlink" +
" ON synconlink.synId = tblsyndromes._id" +
" WHERE synconlink.conId = "+intCondition2+"", null);
新代碼,我使用 -
String sqlString = "SELECT tblsyndromes._id, tblsyndromes.synname FROM tblsyndromes JOIN synconlink ON synconlink.synId = tblsyndromes._id WHERE synconlink.conId = 55 INTERSECT SELECT tblsyndromes._id, tblsyndromes.synname FROM tblsyndromes JOIN tblsymsynlink ON tblsymsynlink.synId = tblsyndromes._id WHERE tblsymsynlink.symId = 136";
SQLiteDatabase db = (new DatabaseHelper(this)).getWritableDatabase();
Cursor cursor = db.rawQuery(sqlString,null);
ArrayList<String> mArrayList = new ArrayList<String>();
cursor.moveToFirst();
while(!cursor.isAfterLast()) {
mArrayList.add(cursor.getString(cursor.getColumnIndex("synname")));
cursor.moveToNext();
}
我多次測試了SQL中使用sqlite3的和它的作品 - 無論是選擇查詢中的Android獨立工作,但只要我嘗試使用INTERSECT我得到一個崩潰 - 現在我收到以下錯誤
壞請求字段插槽0,-1。 numRows = 3,numColumns = 2
錯誤說的是什麼? – zapl 2012-03-19 21:20:26
對不起延遲的錯誤說 03-26 20:45:45.949:INFO /數據庫(31208):源碼返回:錯誤代碼= 0,味精=回收從WAL文件/數據/數據/ 63幀
03-26 20:45:45.999:信息/數據庫(31208):sqlite返回:錯誤代碼= 1,msg =接近「synconlink」:語法錯誤 – user985869 2012-03-26 20:10:54
我沒有看到任何錯誤。錯誤說你在「synconlink」附近寫了一些錯誤,這應該是JOIN之後的錯誤。你有沒有試圖直接通過sqlite執行相同的查詢?也許這給你更多的洞察力。 – zapl 2012-03-26 20:55:39