两个查询给出不同的结果

时间:2013-10-04 12:35:08

标签: mysql

为什么我为第一个查询而不是第二个查询获取null?我知道该文件具有该值,我还包括解释结果,希望它有所帮助。如果我可以建议如何以比使用案例更好的方式做到这一点,并且何时将多个值组合成1,这也是有帮助的,这里仅从城市开始,但我计划将城市,城镇,村庄组合成哇哇

感谢

        select filename,(case when road like '%city%' then 'woohoo' end) as x
        from files,metadata where files.id = metadata.id and
        filename like '%ABC%'
        group by filename ;




        select filename,(case when road like '%city%' then 'woohoo' end) as x
        from files,metadata where 
        filename like '%ABC%'
        group by filename ;



        1   SIMPLE  files   index   PRIMARY filename_idx    767     313728  Using where; Using index
        1   SIMPLE  metadata    ref MetaData$id_FK  etaData$id_FK   4   schema.files.id 1   

        1   SIMPLE  metadata    ALL                 315423  Using temporary; Using filesort
        1   SIMPLE  files   index       filename_idx    767     313728  Using where; Using index; Using join buffer

1 个答案:

答案 0 :(得分:1)

您的过滤器可能没有返回任何结果,files.id = visionmetadata.id

如果您使用了非弃用的连接语法,您会发现它更容易。 您的查询现在:

  select filename,(case when road like '%city%' then 'woohoo' end) as x
    from files inner join metadata on files.id = metadata.id 
    where
    filename like '%ABC%'
    group by filename ;