2016-11-20 171 views
0

我想返回一條消息,如nested SELECT這樣的語句中沒有找到任何行。在這種情況下,當連續沒有Lake時,返回消息是'找不到湖'。我試過IFNULL,但是當沒有湖時它什麼都不會返回。IFNULL在嵌套select語句中mysql

SELECT GROUP_CONCAT(concat_ws(', ', Lake_name, 
            IFNULL(Area, 'not available'),        
            IFNULL(Altitude, 'not available'), 
            IFNULL(Depth, 'not available'), 
            IFNULL(River_outflow, 'not available') 
          ) SEPARATOR '; ') 
From LAKE WHERE IFNULL(Lake_name, 'no lakes found') IN 
         (SELECT Lake FROM LOCATION where County IN 
         (SELECT County FROM CITY WHERE City_name='$userinput')) GROUP BY NULL;"; 

回答

1

我想你應該選擇這種方式

SELECT CASE when Lake_name is null then 'no lakes found' else 
     GROUP_CONCAT(concat_ws(', ', Lake_name, 
             IFNULL(Area, 'not available'),        
             IFNULL(Altitude, 'not available'), 
             IFNULL(Depth, 'not available'), 
             IFNULL(River_outflow, 'not available') 
           ) SEPARATOR '; ') END my_lake 
    From LAKE 
    WHERE LAKE_name IN (SELECT Lake_name FROM LOCATION where County IN 
         (SELECT County FROM CITY WHERE City_name='$userinput')) 
    OR LAKE_name is null ; 
+0

它的工作原理,但還是有沒有消息回報;我甚至將它改爲「或LAKE.Lake_name爲NULL GROUP BY Lake_name,Area,Altitude,Depth,River_outflow」,然後結束 – tuyenle

+0

對不起,我使用了錯誤的湖而不是lake_name ..我稍微用lake_name更新了答案..可能是別名不能正常工作,所以我在my_lake中更改列名的別名。讓我知道 – scaisEdge

+0

是的,我注意到了。我做了一些改變。它現在有效 – tuyenle