mysql多行合并成一行数据 mysql查询的数据换行

建立数据库和表drop database if exists jbxx;create database jbxx;use jbxx;create table grjbxx(ryid int auto_increment not null pri***ry key,sfzh varchar(50) not null,hbh varchar(50) not null,xm varchar(50) not null,xb varchar(4) not null,mz varchar(50) not...

建立数据库和表

drop database if exists jbxx;create database jbxx;use jbxx;create table grjbxx(ryid int auto_increment not null pri***ry key,sfzh varchar(50) not null,hbh varchar(50) not null,xm varchar(50) not null,xb varchar(4) not null,mz varchar(50) not null,csrq date not null,hj varchar(50) not null,zz varchar(50) not null,lxdh varchar(20) not null,gmt_create datetime not null default current_timestamp);insert into grjbxx(sfzh,hbh,xm,xb,mz,csrq,hj,zz,lxdh) values('37032219000101001x','3703220105','张三','男','汉族','1900-02-05','山东高青','高青县*小区*号楼*单元*户号','1390000000');select * from grjbxx;

查询xm的分组统计

SELECT xm,count(*)from grjbxx group by XM;

只显示xm重复行的统计

SELECT xm,count(*)from grjbxx group by XM having count(*)>1;

显示xm副本的所有记录信息

SELECT * from grjbxx where XM in(SELECT XM from grjbxx group by XM having count(XM)>1);

显示sfzh的所有重复记录信息

SELECT * from grjbxx where sfzh in(SELECT sfzh from grjbxx group by sfzh having count(sfzh)>1);

删除表中冗余的sfzh重复记录。根据单个字段(sfzh)来判断重复记录,并且只留下具有最大ryid的记录

delete from grjbxxwhere sfzh in(SELECT sfzh from grjbxx group by sfzh having count(sfzh)>1)and ryid not in(select ***x(ryid) from grjbxx group by sfzh having count(sfzh)>1);

数据库修改

use mytest;        --打开mytest数据库SELECT * from stu;    --查询STU表全部记录ALTER TABLE stu MODIFY gmt_modified datetime NOT NULL ON UPDATE CURRENT_TIMESTAMP; --修改gmt_modified字段非空,更新时自动更新ALTER TABLE stu MODIFY gmt_modified datetime NOT NULL;                  --修改gmt_modified字段非空ALTER TABLE stu change gmt_create gmt_create datetime NOT NULL DEFAULT CURRENT_TIMESTAMP; --修改gmt_create是datetime类型,非空,默认值自动时间desc stu;        --显示stu表结构UPDATE stu set gmt_modified='2018-08-01 01:59:01';   --更新所有的gmt_modified的值truncate stu;    --清空stu表,仅保留数据结构

将多行数据合并为一行,将相同的hbh合并为一行

从grjbxx GROUP BY hbh中选择hbh,count(xm)为number,GROUP_CONCAT(xm)为member

查询前五条记录

select * from grjbxx LIMIT 5;

统计多个数据,并使用虚拟表dual来显示

SELECT(SELECT count(DISTINCT sfzh) from grjbxx) 总人数, (SELECT count(DISTINCT sfzh) from *** where ***lb='01') 社保 from DUAL;

查询日期字段的日期范围内的记录,即1980-01-01 00:00 –1999-12-31 00:00:00,两个边界都包括,该时间范围的记录,

select * from grjbxx WHERE csrq BETWEEN ‘1980-01-01’还有‘1999-12-31’;

查询一段时间内的记录

select * from grjbxx WHERE GMT _ create >=’2019-01-23 00:00:00′和gmt _ create & lt= ‘2019-01-23 14:53:06’;

日期转换

SELECT DATE_FORMAT(20140614162458,'%Y-%m-%d %H:%i:%s');SELECT DATE_FORMAT('2014-02-24','%Y-%m-%d %H:%i:%s');SELECT DATE_FORMAT('2014-02-24','%Y-%m-%d')SELECT str_to_date('2014-02-24','%Y-%m-%d')SELECT DATE_FORMAT(gmt_create,'%Y-%m-%d') from grjbxx;ORCAL 日期转换select to_date('2004-05-07 13:23:44','yyyy-mm-dd hh24:mi:ss') from dual

使用substr函数查询,SUBSTR(str,pos,len)的意思是:从POS开始的位置截取len个字符(空白色也算字符)。

SELECT * from grjbxx where substr(sfzh,1,6)= ’370322′

replace(str,oldstring,newstring) replace函数有三个参数,它用newstring字符串替换字符串中的oldstring。

UPDATE grjbxx SET hbh=REPLACE(hbh,’2′,’一’)

删除自增长主键,从1开始

1。取消自增长

ALTER TABLE grjbxx MODIFY ryid int

2。取消主键

ALTER TABLE grjbxx DROP PRIMARY key;

3。将所有id更新为0

更新grjbxx***ryid = 0;

4。设置主键的自增长

ALTER TABLE grjbxx CHANGE ryid ryid int not NULL主键auto _ increment

显示百分号%

select concat(round(fs/100*100,2),’%’)来自某人;

计算>:=60%的记录

选择round(sum(当fs & gt=60那么1 else 0 end)/count(fs),2)来自***;

本文来自夜遇投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/578232.html

打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
() 0
上一篇 06-05
下一篇 06-05

相关推荐

评论列表

联系我们

在线咨询: QQ交谈

邮件:admin@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信