我在 Android 中使用 sqLite 查询时遇到问题。
基本上我想要的是这样的:
SELECT * FROM table
WHERE column2 LIKE ?
OR column3 LIKE ?
AND column1 =?
GROUP BY column2
ORDER BY column2;
这是我的代码:
String query = "SELECT * FROM " +
DBHelper.DB_SEARCH_TABLE + " WHERE " +
DBHelper.DB_SEARCH_SEARCHVALUE + " LIKE ? OR " +
DBHelper.DB_SEARCH_ARTIST + " LIKE ? AND " +
DBHelper.DB_SEARCH_TYPE + " =? GROUP BY " +
DBHelper.DB_SEARCH_SEARCHVALUE + " ORDER BY " +
DBHelper.DB_SEARCH_SEARCHVALUE + ";";
cursor = mp3Database.rawQuery(query, new String[]{"%" + searchTerm + "%", "%" + searchTerm + "%", type});
查询类型有效。它不会给出任何错误...但它还包含不属于我正在查找的类型的行...(AND column1 =?)
LIKE 子句像这样工作得很好...问题只是类型。
建议?
==========================
这是一个合理的查询吗?
SELECT * FROM Search
WHERE (SearchValue LIKE ? OR Artist LIKE ?) OR
(Artist LIKE ? AND Artist LIKE ?) AND
Type =?
GROUP BY SearchValue
ORDER BY Artist , SearchValue;
<小时/>
String query = "SELECT * FROM " +
DBHelper.DB_SEARCH_TABLE + " WHERE (" +
DBHelper.DB_SEARCH_SEARCHVALUE + " LIKE ? OR " +
DBHelper.DB_SEARCH_ARTIST + " LIKE ?) OR (" +
DBHelper.DB_SEARCH_ARTIST + " LIKE ? AND " +
DBHelper.DB_SEARCH_ARTIST + " LIKE ?) AND " +
DBHelper.DB_SEARCH_TYPE + " =? GROUP BY " +
DBHelper.DB_SEARCH_SEARCHVALUE + " ORDER BY " +
DBHelper.DB_SEARCH_ARTIST + " , " +
DBHelper.DB_SEARCH_SEARCHVALUE + ";";
cursor = mp3Database.rawQuery(query, new String[]{"%" + searchTerm + "%", "%" + searchTerm + "%", "%" + searchTerm + "%", "%" + search
+ "%", type});
最佳答案
您可能想要对 where 子句进行分组:WHERE (DBHelper.DB_SEARCH_SEARCHVALUE LIKE ? OR DBHelper.DB_SEARCH_ARTIST LIKE ?) AND DBHelper.DB_SEARCH_TYPE = ?
String query = "SELECT * FROM " +
DBHelper.DB_SEARCH_TABLE + " WHERE (" +
DBHelper.DB_SEARCH_SEARCHVALUE + " LIKE ? OR " +
DBHelper.DB_SEARCH_ARTIST + " LIKE ?) AND " +
DBHelper.DB_SEARCH_TYPE + " =? GROUP BY " +
DBHelper.DB_SEARCH_SEARCHVALUE + " ORDER BY " +
DBHelper.DB_SEARCH_SEARCHVALUE + ";";
cursor = mp3Database.rawQuery(query, new String[]{"%" + searchTerm + "%", "%" + searchTerm + "%", type});
关于android - 复杂的 sqLite 查询 LIKE 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33620517/