我的操作需求:
1、查询出的结果,加一个自定义的字段和数据?
SELECT * , 100 as cc FROM tab; # 增加cc字段 值是100
select realname, user_id, 'user' as type from ds_user;
2、查询出的结果,修改字段的名称?
3、查询出的结果,在查询出的数据的基础上修改数据的值?
4、mysql查询结果null值处理问题
select IFNULL(‘可能有空值的列’,‘为空值时默认的值(数据类型记得对上)’) from table
例;SELECT IFNULL(zt,0),dctm FROM tb_battery_old_table
5、查询一个字段的是否有多个值
可以写in(1,2,3) 或者分开查询union all 查询结果
select user_Email from ds_user where user_id in (1,3,24,56,93,98) and user_name!="";
6、以id分组,把name字段的值打印在一行,分号分隔
关键字:group_concat separator :分隔符 CONCAT():用于将多个字符串连接成一个字符串
select id,group_concat(name separator ' ; ') from table group by id
7、一个字段有多个参数传递进来,应该如何写。
关键字:or (or:或者)
select * from table where name = "参数值1" or name = "参数值2"
8、一个列有多个值,查询字段中是否包含某个值
关键字:find_in_set (find:查找)
select * from table where find_in_set('admin',username)
9、一个字段多个值,修改其中的一个
关键字:replace (replace:修改 替换)
update table set username= replace(username,'原来的值’,‘新的值’)
10、一个字段中添加新的值,使用 “ ,” 隔开
关键字 : concat (concat:合并多个数组;合并多个字符串)
update table set username= concat(username, ' ,要增加的值 ' )
11、删除指定的字段
关键字 : replace (replace : 替换 修改)
update table set username = replace(username, '1,' ," " )
参考资料:https://blog.csdn.net/Q927920568/article/details/84563529#commentBox
12、需求:之前汉字转拼音时候发觉有个字母ü转换错了,应该是v才对,实际上ü也没错,但是在计算机拼音中ü是用v表示的,所以要把表中的ü全部转换为v
写出来了发现报错了。
You can’t specify target table for update in FROM clause 这个错误的意思是不能在同一个sql语句中,先select同一个表的某些值,然后再update这个表。
解决方法:给查询加别名,用中间表来实现不是对同一表作操作。
update bxkc_keyword_dict set pinyin=replace(pinyin,‘lu:’,‘lv’) where pinyin
in(select * from(SELECT pinyin from bxkc_keyword_dict WHERE pinyin LIKE’%lu:%’) a)
例如我查出来的结果:
| 字段1 | 字段2 |
| 值1 | 值2 |
我想要在结果集中增加一个字段,这个字段是表中没有的,值是固定的,
例如:
| 字段1 | 字段2 | 新增字段 |
| 值1 | 值2 | 值固定 |
例如:
| 字段1 | 更改后的字段2 | 新增字段 |
| 值1 | 值2 | 值固定 |
解决措施
假设你的表名为tab1,只有字段为a,b,想在查询结果中新增字段c(固定值为100),可以这样写:
SELECT T.*,100 as c FROM tab1 T;
若100为字符串则是:
SELECT T.a,T.b,'100' as c FROM tab1 T;
举例:
-
时间与字符串之间相互转换
1.时间转字符串
DATE_FORMAT(日期,格式字符串)
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s');
date_format(date,format):日期转字符串
select date_format('2008-08-08 08:08:08', '%Y%m%d%H%i%s');
time_format(time,format):时间转字符串
select time_format('08:08:08', '%H%i%s');
2.字符串转时间
STR_TO_DATE(字符串,日志格式)
SELECT STR_TO_DATE('2019-01-20 16:01:45', '%Y-%m-%d %H:%i:%s');
字符串类型转换成日期/时间类型
str_to_date(str, format):
select str_to_date('18/08/08' , '%y/%m/%d'); -- 2018-08-08
select str_to_date('2018/08/08', '%Y/%m/%d'); -- 2018-08-08
select str_to_date('08:08:08', '%h:%i:%s'); -- 08:08:08
select str_to_date('2018.08.08 08:08:08', '%Y.%m.%d %h:%i:%s'); -- 2018-08-08 08:08:08
select str_to_date('2018-08-08 08:08:08', '%Y-%m-%d %H:%i:%s'); -- 2018-08-08 08:08:08
3.时间转时间戳
select unix_timestamp(now());
4.字符串转时间戳
select unix_timestamp('2019-01-20');
5.时间戳转字符串
select from_unixtime(1451997924,'%Y-%d');
附日期格式如下:
格式 描述
%a 缩写星期名
%b 缩写月名
%c 月,数值
%D 带有英文前缀的月中的天
%d 月的天,数值(00-31)
%e 月的天,数值(0-31)
%f 微秒
%H 小时 (00-23)
%h 小时 (01-12)
%I 小时 (01-12)
%i 分钟,数值(00-59)
%j 年的天 (001-366)
%k 小时 (0-23)
%l 小时 (1-12)
%M 月名
%m 月,数值(00-12)
%p AM 或 PM
%r 时间,12-小时(hh:mm:ss AM 或 PM)
%S 秒(00-59)
%s 秒(00-59)
%T 时间, 24-小时 (hh:mm:ss)
%U 周 (00-53) 星期日是一周的第一天
%u 周 (00-53) 星期一是一周的第一天
%V 周 (01-53) 星期日是一周的第一天,与 %X 使用
%v 周 (01-53) 星期一是一周的第一天,与 %x 使用
%W 星期名
%w 周的天 (0=星期日, 6=星期六)
%X 年,其中的星期日是周的第一天,4 位,与 %V 使用
%x 年,其中的星期一是周的第一天,4 位,与 %v 使用
%Y 年,4 位
%y 年,2 位
%M 月名字(January……December)
%W 星期名字(Sunday……Saturday)
%D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。)
%Y 年, 数字, 4 位
%y 年, 数字, 2 位
%a 缩写的星期名字(Sun……Sat)
%d 月份中的天数, 数字(00……31)
%e 月份中的天数, 数字(0……31)
%m 月, 数字(01……12)
%c 月, 数字(1……12)
%b 缩写的月份名字(Jan……Dec)
%j 一年中的天数(001……366)
%H 小时(00……23)
%k 小时(0……23)
%h 小时(01……12)
%I 小时(01……12)
%l 小时(1……12)
%i 分钟, 数字(00……59)
%r 时间,12 小时(hh:mm:ss [AP]M)
%T 时间,24 小时(hh:mm:ss)
%S 秒(00……59)
%s 秒(00……59)
%p AM或PM
%w 一个星期中的天数(0=Sunday ……6=Saturday )
%U 星期(0……52), 这里星期天是星期的第一天
%u 星期(0……52), 这里星期一是星期的第一
————————————————