2017-08-17 10 views
-2
SELECT month,Avg(rain_fall) FROM rain_fall WHERE 
    STR_TO_DATE(CONCAT('01','-',month,'-',year) , '%d-%b-%Y') 
    between 
    STR_TO_DATE('01-Jan-1991','%d-%b-%Y') and 
    STR_TO_DATE('01-Dec-1993','%d-%b-%Y') 
    group by month 
    order by MONTH(STR_TO_DATE(CONCAT('01','-',month,'-',year) , '%d-%b-%Y')) 
    UNION 
    SELECT month,Avg(data_value) FROM temprature_data WHERE 
    STR_TO_DATE(CONCAT('01','-',month,'-',year) , '%d-%b-%Y') 
    between 
    STR_TO_DATE('01-Jan-1991','%d-%b-%Y') and 
    STR_TO_DATE('01-Dec-1993','%d-%b-%Y') 
    group by month 
    order by MONTH(STR_TO_DATE(CONCAT('01','-',month,'-',year) , '%d-%b-%Y')) ; 

上記は私のSQLクエリです。私は、選択された年のtemprature_dataテーブルとrain_fallテーブルの年間のすべての月に対する平均値を取得したいと思います。mysqlの2つのテーブルから結果を取得する方法

エラーメッセージは受信された:

#1221 - UNIONとORDERの不正使用

答えて

1

使用括弧各selectクエリとUNION ALLに:

P.S.monthは予約語です。ここに列名を使用している場合は、それを別のものに変更して、後のクエリで競合しないようにしてください。 Check this list of reserved words in MySQL

(SELECT 
    month, 
    Avg(rain_fall) 
FROM 
    rain_fall 
WHERE 
    STR_TO_DATE(CONCAT('01','-',month,'-',year) , '%d-%b-%Y') 
between 
    STR_TO_DATE('01-Jan-1991','%d-%b-%Y') 
    and 
    STR_TO_DATE('01-Dec-1993','%d-%b-%Y') 
group by 
    month 
order by 
    MONTH(STR_TO_DATE(CONCAT('01','-',month,'-',year) , '%d-%b-%Y')) 
) 
UNION ALL 
(
SELECT 
    month, 
    Avg(data_value) 
FROM 
    temprature_data 
WHERE 
    STR_TO_DATE(CONCAT('01','-',month,'-',year) , '%d-%b-%Y') 
between 
    STR_TO_DATE('01-Jan-1991','%d-%b-%Y') 
and 
    STR_TO_DATE('01-Dec-1993','%d-%b-%Y') 
group by 
    month 
order by 
    MONTH(STR_TO_DATE(CONCAT('01','-',month,'-',year) , '%d-%b-%Y')) 
); 
関連する問題