2016-03-24 14 views
8

Lahman SQLベースボールデータベースのオフラインバージョンに切り替える際に問題が発生しています。私はEDXコースに端末埋め込みを使用していました。このコマンドは、Web端末上で正常に動作:エラーコード:1055はsql_mode = only_full_group_byと互換性がありません

エラーコード:SQL 5.5.46を実行しているが、私は使用するときに私のオフライン版は、私は次のエラーコードを取得する5.7.10を実行している

SELECT concat(m.nameFirst,concat(" ",m.nameLast)) as Player, 
    p.IPOuts/3 as IP, 
    p.W,p.L,p.H,p.BB,p.ER,p.SV,p.SO as K, 
    p.IPOuts+p.W*5+p.SV+p.SO-p.BB-p.L-p.H as PTS, 
    p.yearID as Year 
FROM Pitching p 
Inner Join Master m 
    ON p.playerID=m.playerID 
WHERE p.yearID=2014 AND p.IPOuts>=50 
GROUP BY m.playerID 
ORDER BY PTS DESC; 

:1055. SELECTリストの式#1はGROUP BY 句にはなく、集計されていない列 'stats.m.nameFirst'(機能的にはGROUP BY句の列に依存しない )が含まれています。これは

ONLY_FULL_GROUP_BY私は、人々の問題の解決策をたくさん読んできたが、彼らはこのような場合には役立っていない= sql_modeのと 互換性がありません。これは決して起こったことではないので、これは非常に明白であるか、おそらく私はコーディングで大丈夫になっていると思います。とにかく、誰もがこれを修正する方法を知っていますか?あなたは非集約とすることにより、そのグループを作成する必要がある。これは想定さ

SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY','')); 

:あなたがこれを行うことができONLY_FULL_GROUP_BY句を削除するには

ONLY_FULL_GROUP_BY,NO_AUTO_CREATE_USER,STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION 

+1

あなたはそれby'.remove 'グループは必要ありません。 –

+0

ああ、あなたはまったく正しいです。 – Frydaddy07

+0

http://stackoverflow.com/documentation/mysql/8245/error-1055-only-full-group-by-something-is-not-in-group-by-clause –

答えて

28

は5.7でsqlmodeはにデフォルトで設定されています列。

よろしく

+0

あなたは正しいです、それはうまくいきます。しかし、私は逃げたように見えて、グループ句をまったく必要としませんでした。おかげさまで、私はそれが私のために働いていたことを正しくやっていた。 – Frydaddy07

+0

これらのデフォルトの5.5から5.6への変更は、多くの人にとって生活を困難にしています。彼らは動機付け以上のものですが、一般的には気づかれません。よろしくお願いいたします。 –

12

受け入れソリューションは、上記のバージョン5.7.9, for osx10.9 (x86_64)に私のために動作しませんでした。

すると次は働いていた -

set global sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'; 
+0

上記の解決策は、Ubuntu 16.04のバージョン5.7.18ではうまくいきませんでしたが、これは –

+0

私の仕事のためにubuntu 16.04 –

+0

これは毎日実行する代わりに解決します。アニス? –

関連する問題