android 数据库(sqlite)查询去除重复值

Android从零开始搭建MVVM架构(4)————Room(从入门到进阶 简介Room是google为了简化旧式的SQLite操作专门提供的一个覆盖SQLite抽象层框架库作用实现SQLite的增删改查(通过注解的方式实现增删改查,类似Retrofit。Bean:实体类,表示数据库表的数据Dao:数据操作类,包含用于访问数据库的方法Database:数据库持有者 & 数据库版本管理者Room:数据库的创建者 & 负责数据库版本更新的具体实现者与greendao的区别(这里只是简单从表面看):同样基于ORM模式封装的数据库。 阅读详情


转发请注明原文出处:http://blog.youkuaiyun.com/anyfive/article/details/45024263


在sqlite中,要去除重复值,只需要加上distinct关键字便可,如:select distinct * from XXX。当在android的sqlite中,必须有一列为_id,或查询的时候将某一列作为_id列,如select XX as _id from XXX。问题是,在select的时候,如果我们不查询_id,或者不在查询中将某一列作为_id;便会报错。例如,我们在gd表中存入广东省所有县名(counties)和其所在市名(cities),即此表中有三列,分别是:_id(主键),counties,cities;这时候,我们想提取出所有的市名,并将其装载入listview中,会发现当我们使用“select distinct cities from gd”时,编译器报错说没有_id;若是我们使用“select distinct _id,cities from gd”时,又无法去除重复值,因为_id是唯一的。这时候,我们可以用到一个函数:

Cursor query(boolean distinct, String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit,CancellationSignal cancellationSignal);

这个函数中,distinct即为是否去除重复值,table为要查询的数据表,columns为要查询的列;当我们传入的columns参数为new String[]{“cities”}时,会发现报错_id不存在,当我们传入的columns参数为new String[]{“_id”,”cities”}时,会发现并没有去除重复值。那么怎么办呢?我们继续看这个函数下面几个参数,我们注意到一个参数为groupBy:分组。我们试着传入“cities”,发现问题解决了,我们取出来的数据是去除重复之后的市,至此,问题解决。实例代码为:

Cursor cursor = db.getReadableDatabase().query(true, "gb", new String[]{"_id","cities"}, null, null, "cities", null, null, null, null);

至于这个函数其他参数,就留给读者自己去发掘吧。




SQLite学习(七)SQLite的HAVING、DISTINCT、JOIN、UNION子句语法和应用 本文讲解SQLite中HAVING、DISTINCT、JOIN、UNION子句的用法,用最简单的方法做最通俗的教学! 阅读详情

相关推荐

android中的sqlite查询数据时去掉重复值

  1、方式一: /** * 参数一:是否去重 * 参数二:表名 * 参数三:columns 表示查询的字段,new String[]{MODEL}表示查询该表当中的模式(也表示查询的结果) * 参数思:selection表示查询的条件,PHONE_NUMBER+" = ?" 表示根据手机号去查询模式 ...

郭宝的博客 3183

Android开发知识(十八)Sqlite数据库的语法&用法总结

文章目录前言Sqlite 基础用法where 条件子句in语法like语法GLOBLIMIT 和 OFFSETOrder ByGroup ByHAVING子句Distinct 关键字Alter 命令Sqlite高级用法SQLite 约束NOT NULL 约束:确保某列不能有 NULL 值。DEFAULT 约束:当某列没有指定值时,为该列提供默认值。UNIQUE 约束:确保某列中的所有值是不同的。P...

lc_miao的专栏 1万+

SQLite数据库实战指南:创建、操作与案例解析

本文还有配套的精品资源,点击获取 简介:SQLite是一种轻量级的、开源的嵌入式关系型数据库管理系统,以其小巧、自包含和跨平台特性广泛应用于多种设备和应用中。它遵循ACID事务原则,支持标准SQL语言,适合数据存储和管理。文章通过Android开发中的两个具体实例,详细介绍了SQLite的创建、操作和Cursor的使用方法,展示了SQLite在数据管理和查询中的强大功能。 ...

weixin_35294091的博客 2257

android sqlite根据指定字段查重和去重

最近项目中遇到sqLite数据库数据出现重复数据,出现重复数据: 原本意愿是:rygid这一列每个数据只能出现一次,现在存在719、533、528、530出现重复; 解决思路:(1)将rygid这列数据根据值分组,再分组过滤查询改组数据长度是否大于1条数据。(根据查询的重 复数据,删除自己不想要的数据) sql 语句:根据某...

无敌小鲁班的博客 4037

Android中的sqlite查询数据时去掉重复值的方法实例

今天小编就为大家分享一篇关于Android中的sqlite查询数据时去掉重复值的方法实例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

EBS开发_离散工单创建API

--以下代码于20171213在TONY环境中实现 DECLARE     l_iface_rec    wip.wip_job_schedule_interface%ROWTYPE; --工单任务接口表     l_group_id     NUMBER;     l_returnstatus VARCHAR2(40);     l_errormsg     VARCHAR2(2000

蜗牛先生快跑的博客 2596

[SQLite 开发] 查询去掉重复数据

本文主要总结数据库去掉重复数据的方法 去掉重复数据的方法: 关键字:distinct 有一表,有折扣名字和折扣价钱 把不重复的折扣价钱查询出来 SELECT distinct DiscountRate FROM DiscountTable 结果: ...

u010130947的专栏 5344

互联网金融项目实战(大数据Hadoop hive)

什么是互联网金融? 互联网金融 --> 信贷(信用贷款) --> 支付宝率先搞了一个信用体系 互联网金融: 在线支付、P2P 银行: 只会锦上添画、不喜欢雪中送炭 银行害怕出现坏账 ( 储户存钱,银行放贷 赚个利息差 ) 银行是可以倒闭的 保险公司不允许倒闭 银行分为:商业银行(自生自灭的)和非商业银行(国家的) 中国工商银行 全球第一大行 招商银行(清朝的一个李鸿章) 中国银行(历史超过 100 年了) 国家政策:希望银行能够扶持中小型企业 p2p:网络借贷平台 民间吸纳贷款 -->

weixin_58276266的博客 1553

sqlite复制数据主键重复_android – 如何防止在sqlite数据库中插入重复值(如果重复然后覆盖)...

我在我的数据库中创建了两个表,在这两个表中我同时插入值,现在我要做的是,我想在第二个表中插入记录,但条件是,如果有两个相同记录然后我想只插入一个记录不重复值,在第二个表中有两个字段一个是id,第二个是类别,当用户插入两个相同类别时,我想只插入一个条目,下面是我的代码不是工作正常,它插入所有记录接受重复值..public long InsertCat(String idd, String cat){...

weixin_39532754的博客 572

JLink 添加国产芯片手把手教程(雅特力 + 华大)

拷贝厂商算法文件夹 + 配置 JLinkDevices.xml。雅特力直接复制官方配置,华大按需添加芯片节点,操作一次,永久生效,以后调试 AT32、HC32 再也不用愁找不到型号。这套方法适配全版本 JLink,也是国产 MCU 替代项目的必备技能,看完照着做,新手也能轻松搞定。百度网盘资料分享:通过网盘分享的文件:jink驱动(包括新增芯片型号)链接: https://pan.baidu.com/s/14SLgrPfyof1lglD6VQguAw?pwd=cfuq 提取码: cfuq。

weixin_48867130的博客 710

超速U盘选购避坑指南:如何通过Rx Detect机制识别真伪USB3.0设备

本文深入解析了USB 3.0超速U盘的选购避坑要点,重点介绍了通过Rx Detect机制识别真伪设备的核心原理。文章提供了从软件检测到实际性能测试的完整方案,帮助消费者和技术人员有效辨别虚假的USB3.0设备,确保获得真正的超速传输体验。

weixin_29189373的博客 443

android字符去重,Android中的sqlite查询数据时去掉重复值的方法实例

1、方式一:/*** 参数一:是否去重* 参数二:表名* 参数三:columns 表示查询的字段,new String[]{MODEL}表示查询该表当中的模式(也表示查询的结果)* 参数思:selection表示查询的条件,PHONE_NUMBER+" = ?" 表示根据手机号去查询模式* 参数五:selectionArgs 表示查询条件对应的值,new String[]{phoneNumber}...

weixin_29863401的博客 712

基于mediapipe的动作捕捉和人物模型的驱动

我实习做这个的时候,当时也找了很多资料,但很多资料都没有讲透,下面我就总结一下自己结合看代码后的感悟,还有一些我认为很重要的点。

qq_58484580的博客 7702

Android开发之SQLite数据库详解

Android开发之SQLite数据库详解 Android系统集成了一个轻量级的数据库:SQLite, SQLite并不想成为像Oracle、MySQL 那样的专业数据库。SQLite只是一个嵌入式的数据库引擎,专门适用于资源有限的设备上(如手机、PDA等)适量数据存取。 虽然SQLite支持绝大部分SQL92语法,也允许开发者使用SQL语句操作数据库中的数 据,但SQLite并不

fengyuzhengfan的专栏 1万+

STM32 FATFS文件系统按行读取SD卡数据

STM32 SD数据实现按行读取

qq_32216815的博客 7826

【数据集处理】中国地面气候资料日值数据集(V3.0)(含MATLAB全代码)

简介数据集数据处理

WW、forever的博客 1万+

SQLite 数据库

Android系统集成了一个轻量级的数据库:SQLite,它只是一个嵌入式的数据库,专门适用于资源有限的设备(如手机、PDA等)从本质上来看,SQLite的操作方式只是一种更为便捷的文件操作。 SQLiteDatabase简介: Android 提供了SQLiteDatabase代表一个数据库(底层就是一个数据库),一旦应用程序获得了代表指定数据库的SQLiteDatabase对象,接下来就可通

SpRcorder的博客 1383

ArcGIS笔记13_利用ArcGIS制作岸线与水深地形数据?建立水动力模型之前的数据收集与处理?

在利用MIKE建立水动力模型之前,需要收集、处理和制作诸多数据和资料,主要有岸线数据、水深地形数据、开边界潮位驱动数据、风场数据、潮位和海流观测资料和站点潮汐调和常数资料等。本篇主要介绍这些资料的获取与处理。

晏长街的博客 5948

Android学习18--SQlite数据库

SQLite只是一个嵌入式的数据库引擎,专门适用于资源有限的设备上(如手机、PDA等)适量数据存取。SQLite只是一个文件。 1、简介SQLiteDatabase Android提供了SQLiteDatabase代表一个数据库(底层就是一个数据库文件),一旦应用程序获得了代表指定数据库的SQLiteDatabase对象,接下来就可通过SQLiteDatabase对象来管理、操作数据库

lixj517990544的专栏 2073

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Android SQLite数据库之一,使用sql语句操作SQLite数据库

SQLite数据库 Android系统集成了一个轻量级的数据库:Sqlite,Sqlite只是一个嵌入式的数据库引擎,专门适用于资源有限的设备上(如手机、PDA等)适量数据存取。 虽然Sqlite支持绝大部分SQL92语法,也允许开发者使用sql语句操作数据库中的数据,但sqlite并不像Oracle,mySql数据库那样需要安装,启动服务器进程,sqlite数据库只是一个文件。 从本质上看

u010947098的专栏 3418

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

android sqlite union,SQLite Union All

SQLite Union All运算符SQLite UNION ALL运算符用于合并两个或多个SELECT语句的结果,而不会忽略重复的行。在SQLite UNION ALL中,结果表还包含重复值。否则,与“联合”适用相同的规则。句法:例:我们有两个表“ STUDENT”和“ DEPARTMENT”。“学生”表具有以下数据:“部门”表具有以下数据:示例1:返回单个字段这个简单的示例仅从多个SELEC...

weixin_35167817的博客 284

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Android-SQLite使用笔记

  SQLite在项目中的使用越来越频繁,所以有必要记下一些常用的操作。Android系统内置了丰富的API供开发人员来操作SQLite,让大家可以轻松地完成对数据的存取。   先看看下面的基本的数据库操作方法。   对于添加、更新和删除,都能使用 1 db.executeSQL(String sql); 2 db.executeSQL(String sql, Object[...

diemojia6455的博客 164

Android---SQLite优化

它的设计目的是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百 K 的内存就够了。它能够支持 Windows/Linux/Unix 等主流的操作系统,同时能够跟很多程序语言想结合,比如 Java、C#、PHP、Tcl 等,还有 ODBC 接口,统一比起 Mysql, PostgreSQL 者两款开源的世界著名数据库管理系统来讲,它的处理速度比他们都快。唯一性索引:保证在索引列中的全部数据是唯一的,对聚簇索引和非聚簇索引都可以使用。查询列与索引列次序一致。

qq_44950283的博客 407

Android :这是一份详细 & 全面的 SQLlite数据库 使用手册

看到这篇文章的人不知道有多少是和我一样的Android程序员。35岁,这是我们这个行业普遍的失业高发阶段,这种情况下如果还不提升自己的技能,进阶发展,我想,很可能就是本行业的职业生涯的终点了。我们要有危机意识,切莫等到一切都成定局时才开始追悔莫及。只要有规划的,有系统地学习,进阶提升自己并不难,给自己多充一点电,你才能走的更远。千里之行始于足下。这是上小学时,那种一元钱一个的日记本上每一页下面都印刷有的一句话,当时只觉得这句话很短,后来渐渐长大才慢慢明白这句话的真正的含义。

2401_83620927的博客 1096

Android数据存储与IO之二 SQLite数据库

SQLite只是一个嵌入式的数据库引擎,专门适用于资源有限的设备商适量数据存储(SQLite数据库只是一个文件) Android提供了SQLiteDatabase代表一个数据库,一旦应用程序获得了代表指定数据库的SQLiteDatabase对象,接下来就可通过SQLiteDatabase对象来管理、操作数据库了 有如下静态方法来打开一个文件对应的数据库 static SQLi

编程问题与思索 661

SQlite数据库

SQLite只是一个嵌入式的数据库引擎,专门适用于资源有限的设备上(如手机、PDA等)适量数据存取。SQLite只是一个文件。 1、简介SQLiteDatabase Android提供了SQLiteDatabase代表一个数据库(底层就是一个数据库文件),一旦应用程序获得了代表指定数据库的SQLiteDatabase对象,接下来就可通过SQLiteDatabase对象来管理、操作数据库

darling757267的专栏 613
上一篇: android 多线程下载文件大小不对的问题
下一篇: android 使用字体图标(Icon Font)
Jimi_Wu
博客等级 码龄12年 40粉丝 16原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值