Android Studio Sqlite同名仅1次上市

时间:2019-01-20 11:58:54

标签: android sqlite android-studio android-listview android-sqlite

尝试学习Android Studio。我希望得到您的帮助。我正在使用sqlite添加和列出数据。

例如;

id-名称-值

1-约翰-100

2-标记-200

3-约翰-150

4-约翰-200

5-亚当-400

我想做的是,只列出一次姓名。

1-约翰

2-标记

3-亚当

private void showlist() {

    ArrayList<DataListItems> contactList = new ArrayList<DataListItems>();
    contactList.clear();
    String query = "SELECT * FROM data ";
    Cursor c1 = sqlHandler.selectQuery(query);
    if (c1 != null && c1.getCount() != 0) {
        if (c1.moveToFirst()) {
            do {
                DataListItems contactListItems = new DataListItems();

                contactListItems.setid(c1.getString(c1
                        .getColumnIndex("id")));
                contactListItems.setName(c1.getString(c1
                        .getColumnIndex("name")));
                contactListItems.setValue(c1.getString(c1
                        .getColumnIndex("value")));
                contactList.add(contactListItems);

            } while (c1.moveToNext());
        }
    }
    c1.close();

    DataListAdapter contactListAdapter = new DataListAdapter(
            SiteList.this, contactList);
    lvCustomList.setAdapter(contactListAdapter);

}

1 个答案:

答案 0 :(得分:0)

您可以使用GROUP BY name仅选择一个名称。但是,所选的 id 将是每个组(名称)的任意ID。

  • 您的代码可以使用String query = "SELECT * FROM data GROUP BY name";

如果您想要每个名称的第一个/最低 id ,则可以将min(id)与GROUP BY NAME一起使用。

  • 您的代码可以使用String query = "SELECT min(id) AS id, name, value FROM data GROUP BY name";

您说您的预期结果应该是

1 - john

2 - mark

3 - adam

那会更复杂(也许用处不大),因为 adam 的ID是 5 而不是3(我认为这只是键入错误)。 / p>