sql 之CONCAT用法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql 之CONCAT用法相关的知识,希望对你有一定的参考价值。

技术分享

这是java交流群里一个网友面试的时候发过来的笔试题,我觉得题目的假定条件应该是某个字母对应的最小数字只有一个。

思路第一步是查出一个子表s1: select name,min(number) from USERS group by name。当然这后面可以加having count(name)>1;我的解法是选择不加,意思就是就算一个字母对应一个数字,也把他给取出来放进这个子表中。

第二步就比较麻烦,怎么删除多余的元素呢?如果 用 delete from USERS where name  in (select name from s1(子表的名字) )and number not in ( select number from s1)。这显然是不行的,因为没有number做到分表来比较,如果像a里面number为4的元素因为和c的最小数相等,就不会被删除。

关键是要分组比较

查看sql语句库,突然发现有一个concat关键词,concat(列名1,列名2)就是把列名1和列名2查出来之后组成一个新列名。正好用在这里,4,a 和4,c用number in 不好区分,4a和4c这个总归好区分了吧。

SELECT * FROM t_ss WHERE CONCAT(NAME,number) NOT IN (SELECT CONCAT(NAME,mn) FROM ((SELECT NAME,MIN(number)AS mn FROM t_ss GROUP BY NAME) AS s1))

 

注:我的表是t_ss,删除实验不可逆,用select是一样的

 

以上是关于sql 之CONCAT用法的主要内容,如果未能解决你的问题,请参考以下文章

sql GROUP_CONCAT用法

MySQL教程之concat以及group_concat的用法

MySQL之concat的用法

MySQL concat用法举例

mysql group_concat用法

mysql中的concat用法!