Mysql 如何选择筛选值并在SQL中仅显示一次?

Mysql 如何选择筛选值并在SQL中仅显示一次?,mysql,sql,Mysql,Sql,假设我们在img_name列中有文件名,结尾为.jpg、.jpg.png和.png: test.jpg test.png test.jpg.png test2.jpg test.3.jpg test.3.png test.3.jpg.png 我只想选择那些可用的.jpg、.png和.jpg.png。 因此,请求应该只显示 test, test.3 删去任何结尾< /强>,但是名称也可以包含在名称中间的某个点,如示例(测试3)中所示。 我已经有了 select img_name from i

假设我们在img_name列中有文件名,结尾为.jpg.jpg.png.png

test.jpg
test.png
test.jpg.png
test2.jpg
test.3.jpg
test.3.png
test.3.jpg.png
我只想选择那些可用的.jpg、.png.jpg.png。 因此,请求应该只显示

test, test.3

<强>删去任何结尾< /强>,但是名称也可以包含在名称中间的某个点,如示例(测试3)中所示。

我已经有了

select img_name from image where (img_name like '%.jpg' or img_name like '%.png');
我想这是可以用的

有什么办法吗


谢谢。

如果您的表中只有
.jpg
.png
.jpg.png
扩展名,您可以这样做

select
   replace(replace(img_name, '.png', ''), '.jpg', '') as name
from image
group by replace(replace(img_name, '.png', ''), '.jpg', '')
having count(*) = 3

是mysql还是postgres?选择一个数据库。这种字符串损坏操作需要数据库特定的函数才能正常执行。事实上,在PostgreSQL中,我可能会使用PL/perl函数。您能给我一些实际数据的示例,看看问题出在哪里吗?您在SQLFIDDLE中试过了吗?嗯,它在计数(*)不等于3的情况下工作,但每个条目都显示3次