質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Q&A

2回答

855閲覧

MySQL1055のエラーを解消したい

tama826

総合スコア3

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

0グッド

1クリップ

投稿2023/02/14 06:49

編集2023/02/14 08:47

実現したいこと

MySQL1055のエラーの解消

前提

主キーを含まないカラムでgroup byをしたいが、エラーが発生しており実行できない。

エラー内容から、group byのカラムとSELECTを一致させないといけないことは理解できたが、
group byに主キーを含めないカラムでグループ分けする方法がよくわからず、SQLの変更を変更できなかった。
ご教授頂けないでしょうか。

<出力テーブル>

b.1b.2b.3...company_names.names.addresss.codet.status
...

SQL実行時にonly_full_group_byのエラーが発生する。

MySQLのonly_full_group_byは解除せずにSQLの変更で対応したい。

発生している問題・エラーメッセージ

Error Code: 1055. Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

該当のソースコード

SQL

1SELECT b.*, bc.name AS company_name, s.name, s.address, s.code, t.status 2FROM テーブル1 b 3LEFT JOIN テーブル2 bc ON bc.id = b.billing_company_id 4LEFT JOIN テーブル3 s ON s.billing_company_id = b.billing_company_id 5LEFT JOIN テーブル4 t ON t.sitecode = s.code 6WHERE b.billing_ym = ?1 7GROUP BY s.code,

試したこと

以下のサイトに記載されていた「サブクエリを使う」、「サブクエリで結合する」を試してみたが上手くいかなかった。
https://blog.capilano-fw.com/?p=7001#i-2

補足情報(FW/ツールのバージョンなど)

MySQL:5.7.41

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2023/02/14 07:32

「?1」はなんでしょうか?
tama826

2023/02/14 07:35

SQL実行時に1番目の変数を代入して実行しています。
yambejp

2023/02/14 07:59

>SQL実行時に1番目の変数を代入して実行 ごめんなさい何をしたいのかわかりません。 「?1」を使うというのはどんな資料に載っていましたか? とりあえずサンプルテーブルを提示して、どういう結果をほしいのか例示ください
tama826

2023/02/14 08:52

説明不足で申し訳ありません。 SpringBootのネイティブクエリを使っており、SQL中の?1はパラメータとして与えています。 https://www.baeldung.com/spring-data-jpa-query 実行結果のサンプルを追記しました。
guest

回答2

0

サンプルデータがないとなんともいえないですがbテーブルが組み込まれていないようです

投稿2023/02/14 07:03

yambejp

総合スコア114843

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tama826

2023/02/14 07:18

yambejpさん、コメントありがとうございます。 SQLの不備すいませんでした。本文更新させて頂きました。
guest

0

GROUP BY

で何も指定していないからエラーになるのでは?
GROUP BY 句はグループ関数(SUM, MAX, MIN, COUNTなど)とセットで使うべきなので、今回はDISTINCTを使った方が良いのでは?
重複したデータを除外してデータを取得する(DISTINCT)

s.column3,

SELECTの並びの最後の , も不要です。

投稿2023/02/14 06:58

Orlofsky

総合スコア16415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tama826

2023/02/14 07:17

Orlofskyさん、コメントありがとうございます。 DISTINCTは検討したのですが、カラムの並びを変更したくなかったという思いからGROUP BYで対応できないかと考えました。 もし、カラムの並びを変えずにDISTINCTできる方法があれば教えていただきたいです。
Orlofsky

2023/02/15 05:27

>1 SELECT b.*, ... >2 FROM テーブル1 b テーブル1の列の並びがわかりませんから、質問にCREATE TABLE文を追加してください。 DISTINCTの使い方はわたしの回答のURLを読んでください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問