我一个表里面有个image的字段,里面存的是图片的路径,如:/image/a/1/tupian.jpg
现在我想按图片名字来分组查出来,排除掉一些在不同文件夹重复的图片数据,即是查询的时候忽略掉前面的路径只根据图片名字来分组,这个sql语句应该怎么写,或者用php怎么写.
mysql 按某字段的一部分分组
答案:2 悬赏:20 手机版
解决时间 2021-01-27 01:14
- 提问者网友:焚苦与心
- 2021-01-26 04:04
最佳答案
- 五星知识达人网友:拾荒鲤
- 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)
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯