永发信息网

mysql 按某字段的一部分分组

答案:2  悬赏:20  手机版
解决时间 2021-01-27 01:14
  • 提问者网友:焚苦与心
  • 2021-01-26 04:04
我一个表里面有个image的字段,里面存的是图片的路径,如:/image/a/1/tupian.jpg
现在我想按图片名字来分组查出来,排除掉一些在不同文件夹重复的图片数据,即是查询的时候忽略掉前面的路径只根据图片名字来分组,这个sql语句应该怎么写,或者用php怎么写.
最佳答案
  • 五星知识达人网友:拾荒鲤
  • 2021-01-26 05:05
select image_file from (select substring_index(image,'/',-1) as image_file from 表) as a1 group by image_file;
全部回答
  • 1楼网友:孤独的牧羊人
  • 2021-01-26 06:43
create table test_guankairi ( id int, image varchar(30) ); insert into test_guankairi select 1, ':/image/a/1/tupian.jpg' union all select 2, ':/image/a/2/tupian.jpg' union all select 3, ':/image/a/3/tupian.jpg' union all select 4, ':/image/a/4/tupian.jpg' union all select 5, ':/image/a/1/tupian5.jpg'; select -- reverse 是字符反转 -- 因为 mysql 的 instr, 只能从前向后查找。 -- 而这里需要 从后向前找第一个 / -- 因此先做字符反转。 -- instr 用于找第一个 / 的位置. -- right 用于获取字符右边的字符 right(image, instr( reverse(image), '/') ) as img, count(*) from test_guankairi group by right(image, instr( reverse(image), '/') ); +--------------+----------+ | img | count(*) | +--------------+----------+ | /tupian.jpg | 4 | | /tupian5.jpg | 1 | +--------------+----------+ 2 rows in set (0.00 sec)
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯