mysql 在查询中,取出字段中的部分值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 在查询中,取出字段中的部分值相关的知识,希望对你有一定的参考价值。

例如:A B

1 abc
2 def
3 ghi
结果需要将 a e i 取出放到C 中 不要按顺序来取,a e i 的位置 是不固定的
结果: A B C
1 abc a
2 def e
3 ghi i
江湖救急啊!谢谢大神

update 表名 set C=substr(B,A,1)

这样腻?

你A是数字,不是字符吧?

追问

是中文的 而且 我刚刚试了下 你这个不可以啊,大哥帮忙看下怎么弄

追答

A里存的1,2,3必须要是数字,否则你得把字符转成数字
你现在这个是报错还是什么?

追问

没有报错 就是没有数据,就是C里没有数据

追答update 表名 set C=substring(B,A,1)

这样看看

追问

饿 还是没有啊!

追答

你把你建表的语句发来看看

追问

我建表 不用sql语句,我是用nacivat for mysql 直接建表的,表应该没什么问题

追答

私信你吧,我直接在你那写好一点,浏览器右上角,查收下

参考技术A select A,B,(CASE WHEN charindex('a', B)!=0 THEN 'a' ELSE WHEN charindex('b', B)!=0 THEN 'B' ELSE WHEN charindex('c', B)!=0 THEN 'C' END) AS C from Table追问

不行啊 有报错, MySQL server version for the right syntax to use near 'CASE WHEN charindex('产业联盟', dp.Activity_name)!=0 THEN '产业联盟' ELS' at line 37

参考技术B 不固定是 随机的意思吗?
没有规则怎么取, 如果说 id=1 取第一个 id=2 取第二个 或许还能做
随机的话感觉没法做追问

不是 是a e i 只是我例子, a=‘产业联盟’ e=‘存费送机’ i=‘沃派36卡’ 不是随机,是固定的值

追答

有规律可以搞
没规律 只能像楼下哪位兄弟那样,所有情况罗列出来
这样 如果C列可供选择的值很多,比如 有个十万二十万的,sql还是没法写的。
所以 你还是自己找找规律 找不到规律的话可以转换一下问题的解决思路 换种解决方案

如何在Mysql取出来的结果中取最大值

文章目录

背景

在一个表,例如log_order表中,有两个常见字段,即create_timeupdate_time,现在我要获取两者中时间最大的那个应该如何获取呢


常见误区

正常搜索的话,大部分出来的都是MAX函数,以为是要取字段中的最大值,也就是一整列中的最大值
其实不是!
我们需要的是, 多个值中的最大值!

百度以为你需要的👇

select max(create_time) from log_order

我们真正需要的👇

  1. 获取create_time最大值
select max(create_time) from log_order
  1. 获取update_time最大值
select max(update_time) from log_order
  1. 比较两者最大值, 再取最大值
max_create_time > max_update_time ? max_create_time max_update_time

解决办法

万能的Mysql其实早就已经预设好了这种处理方案,那就是

Greatest函数!

其实只需要一行SQL即可解决我们的问题
select GREATEST(max(create_time),max(update_time)) from log_order

GREAT!

以上是关于mysql 在查询中,取出字段中的部分值的主要内容,如果未能解决你的问题,请参考以下文章

mySQL怎么批量替换查询结果中的字段值?

ios开发:如何取出json里面的字段值?

mysql取出表中,某字段值最大的一条纪录,sql语句

MYSQL如何根据变量的值来选择字段进行查询

mysql group by 的用法,集合后取出指定的字段

sql怎么获得数据库中的字段值