2017-01-26 6 views
1

が、私はこのクエリを持っている含ま発生しましたデータベースエラーは、SELECTリストの式#2は、GROUP BY句ではなく、非凝集列

SELECT substring(TGLLAHIR, 1, 7) as TGLLAHIR_, 
     substring(TGLLAHIR, 5, 2) as BULAN, `TGLLAHIR` as `TGL` 
FROM `m_pasien` 
WHERE substring(TGLLAHIR,1,4) = '2013' 
GROUP BY substring(TGLLAHIR, 1, 7) 
ORDER BY `TGLLAHIR` ASC 

が、メッセージのエラーは、SELECTリストの

式#2を示しますGROUP BY句には存在せず、GROUP BY句のカラムに機能的に依存しない非集約カラム 'rsukemba_kojarsuk.m_pasien.TGLLAHIR'が含まれています。これはsql_mode = only_full_group_byと互換性がありません

どうすれば解決できますか?

+3

何エラーメッセージの一部がわかりませんか?それは私にはとても分かりやすいようです。 –

+0

教えていただけますか? –

+0

なぜGROUP BYを最初に使用していますか?あなたはあなたの質問に*集計を使用していません。 'GROUP BY'はあなたの質問には意味がありません。 – Siyual

答えて

0

あなたはあなたがこのクエリで句でグループを悪用していると思われる代わりに

SELECT distinct 
     substring(TGLLAHIR, 1, 7) as TGLLAHIR_ 
     ,substring(TGLLAHIR, 5, 2) as BULAN 
     ,`TGLLAHIR` as `TGL` 
FROM `m_pasien` 
WHERE substring(TGLLAHIR,1,4) = '2013' 
ORDER BY `TGLLAHIR` ASC 
0

distinctを使用し、group byを必要としません。 グループbyは、データを集約する場合に便利です。たとえば、勘定科目、日付、預金金額の表がある場合。そして、あなたはそれはあなたがやろうとしている正確に何を、とあなたの奇妙な名前さえ難しいので、単独の質問から不明だ

select account, sum(deposits) 
    from some_table 
    group by account 

のようなものを書くことができ、すべての日付の上に各アカウントへの総預金を知りたいと思いました変数はコンテキストなしでリストされます。しかし!ここでグループを使用する必要はないと言っても過言ではないでしょうから、削除してください。

P.S. 選択すると別のに気をつけます。あなたが何を捨てているのか分からず、必要のないことが確かでない限り、私は気をつけます。

0

集計関数ANY_VALUE()を使用して、この警告メッセージを抑制し、クエリを実行可能にする必要があります。 MySQLは、集計されていないフィールドのどの値を結果セットに含めるべきかを知りません。 GROUP BY句の一部ではありませんが、ここでは集約関数でラップする必要があるすべてのフィールドは、それがどのように見えるべきか、次のとおりです。

SELECT substring(TGLLAHIR, 1, 7) as TGLLAHIR_, 
     substring(TGLLAHIR, 5, 2) as BULAN, 
ANY_VALUE(`TGLLAHIR`) as `TGL` 
FROM `m_pasien` 
WHERE substring(TGLLAHIR,1,4) = '2013' 
GROUP BY substring(TGLLAHIR, 1, 7) 
ORDER BY `TGLLAHIR` ASC 

そして、ここでのMySQLのrefferenceにおけるこの点の説明は次のとおりです。https://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html#function_any-value

関連する問題