Android Studio Sqlite同名仅1次上市

Android Studio Sqlite same name only 1 time listing

正在尝试学习 Android 工作室。我希望您在 this.I 上使用 sqlite 添加和列出数据方面提供帮助。

例如;

id-name-value

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);

}

您可以使用GROUP BY name到select只有一个名字。但是,id selected 将是每个组(名称)的任意 id。

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

如果您想要每个名称的 first/lowest 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(我假设只是打字错误)。