2013-10-04 46 views
0

爲什麼我會爲第一個查詢得到空值而不是第二個?我知道這個文件有這個價值,我還包括解釋結果,希望它有幫助。如果有人可以建議我怎樣才能以比使用案例更好的方式來做到這一點,何時將多個值合併爲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 
+0

您能否爲您的問題添加更多細節?例如,文件表中的記錄是否有可選的元數據中只有1條記錄?另外,您是否可以提供一些樣本數據以及預期的輸出結果? – AgRizzo

回答

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 ; 
+0

但我明白這是造成它,如何解決它?它在其他查詢中正常工作 – trackmeifUcan

+0

添加了您的查詢。嘗試左連接。怎麼修?沒有符合您的連接條件的數據 - 修復會添加數據?或者你究竟想達到什麼目的? – AdrianBR

相關問題