我的rawQuery SELECT DISTINCT ...在flft sqflite中不起作用。
这就像应用程序一样的测验,我从数据库中收到一系列问题,用户回答是/否,我将索引号保存在sherePref中, 后者从方法_getAnswer()获得,然后将这些数字从DB传递到getList方法。 我得到结果详细信息和输出,但是SELECT DISTINCT无法正常工作,我得到了所有答案和重复项。
我从数据库中获得的方法:
Future<List<List<Widget>>> getList(List<int> list, String column) async {
List<Widget> list1 = List();
List<Widget> list2 = List();
List<Widget> list3 = List();
List<List<Widget>> listFromDB = [list1, list2, list3];
var databasesPath = await getDatabasesPath();
String path = join(databasesPath, 'books.db');
Database database = await openDatabase(path, version: 1);
for (int i = 0; i < list.length; i++) {
var result = await database
.rawQuery('SELECT DISTINCT $column FROM $booksTable WHERE $colId= ${list[i]}');
debugPrint('List: ' +list[i].toString());
if (list[i] < 18) list1.add(_item(result[0][column].toString()));
if (list[i] > 17 && list[i] < 50)
list2.add(_item(result[0][column].toString()));
if (list[i] > 49) list3.add(_item(result[0][column].toString()));
}
// await database.close();
return listFromDB;
}
bool _summary = false;
_getAnswer() async{
SharedPreferences pref = await SharedPreferences.getInstance();
List<String> listString = pref.getStringList('Answers') ?? List();
if(listString.isNotEmpty){
List<int> listInt = listString.map(int.parse).toList();
listInt.sort();
_list = await DB().getList(listInt, _summary ? 'Detail' : 'Output'); //colums from db.
setState((){});
}
}
我做错了什么?我想让“细节”和“奥特普特”中没有重复项。