如何在SELECT的结果中有条件地对某些行进行二元化?

时间:2018-04-25 11:22:47

标签: mysql sql

我们假设我们在MySQL数据库中有一个表,它有两个文本列mime_typefile_name。我可以通过以下方式SELECT来自此表的数据:

id  mime_type           file_name
001 application/pdf     file_one.pdf
002 image/png           screenshot.png
002 image/png           thumb_screenshot.png      # <- This row is "virtual"
...

即。取决于mime_type列的内容(对于图像文件),在表格行中实际添加不存在且具有相同数据,但稍微更改file_name的值。

有没有办法使用SQL做到这一点?

1 个答案:

答案 0 :(得分:2)

您可以使用union all

select id, mime_type, file_name
from t
union all
select id, mime_type, 'thumb_screenshot.png'
from t
where mime_type = 'image/png';

编辑:

基于评论:

select id, mime_type, file_name
from t
union all
select id, mime_type, concat('thumb_', file_name)
from t
where mime_type = 'image/png';