Mysql SQL和SQL中的if语句
我正在选择文件,但当名称以某个序列开头时,我希望它也有一个这样的特定字段Mysql SQL和SQL中的if语句,mysql,sql,database,Mysql,Sql,Database,我正在选择文件,但当名称以某个序列开头时,我希望它也有一个这样的特定字段 select filename from filestable where filename like '%abc_%' and not filename like '%abc2%' //这里我不想使用转义字符,只想跳过abc2文件名,然后为它创建第二个查询(有点迟钝),因为我重复查询并合并结果 select filename from filestable inner join filetype
select filename from filestable where
filename like '%abc_%' and not filename like '%abc2%'
//这里我不想使用转义字符,只想跳过abc2文件名,然后为它创建第二个查询(有点迟钝),因为我重复查询并合并结果
select filename from filestable
inner join filetype on filetype.id = filename.id
where
filename like '%abc2%'
and filetype.type = 'mpeg'
我想把它们都变成一个问题,如果可能的话 试试这个:
SELECT filename FROM filestable
WHERE filename LIKE '%abc_%'
AND ( filename NOT LIKE '%abc2%'
OR EXISTS (
SELECT 1 FROM filetype
WHERE filetype.id = filename.id
AND filetype.type = 'mpeg'
));
如果您使用一个
连接将两者结合起来
,那么我认为这是等效的查询:
select distinct ft.filename
from filestable ft left join
filetype fty
on fty.id = ft.id
where (ft.filename like '%abc_%' and not ft.filename like '%abc2%') or
(ft.filename like '%abc2%' and fty.type = 'mpeg');
如果您知道给定的
文件名在文件类型中没有重复项,那么只需使用select
而不是select distinct
,但我不明白-为什么不在第一个查询中就在那里执行UNION?我是新的,我不确定我是否希望有直接的东西,如果是这样的话,那么filetype.type='mpeg'我真的不明白你想在高层次上实现什么,你能解释清楚一点吗?比如一些输入和输出示例?我想这也是与其他解决方案相比最快的?至少在文本中它们看起来更长:P