programing

Mariadb / Mysql BUG ? : 서브쿼리에서 'master'별로 그룹화

procenter 2022. 9. 18. 21:06
반응형

Mariadb / Mysql BUG ? : 서브쿼리에서 'master'별로 그룹화

테이블이 2개 있습니다.

판매:

아이디 청구서 유효한
100 IV001 Y

지불:

아이디 마스터. 시험
110 100 200 100
111 100 300 100
112 101 400 101

그리고 나는 질문을 했다:

select master, sum(amount) amount from payment group by master

기대했던 대로의 결과를 얻을 수 있습니다.

마스터.
100 500
101 400

그러나 다음 쿼리를 실행하면:

select s.id, s.invoice, p.amount from sales s join (select `master`, sum(amount) amount from payment group by `master`) p on p.`master`=s.id

이렇게 결과가 틀렸다.

아이디 청구서
100 IV001 900(500이어야 함)

단, 컬럼을 사용하면test그룹 열로 지정하면 결과는 OK입니다.다음 쿼리를 실행합니다.select s.id, s.invoice, p.amount from sales s join (select test, sum(amount) amount from payment group by test) p on p.test=s.id모든 것이 예상대로 되었다.

이건 칼럼과 관련이 있는 것 같아요.master그것은 예약어이고, 나는 이미 backtick (')을 사용했다.

질문입니다.콜럼명으로 계속 사용하고 싶은 경우 어떻게 하면 좋을까요? 아니면 Mariadb/Mysql 버그인가요?

(Ubuntu 21.04에서 Mariadb 버전 10.3과 10.5를 실행하고 있습니다.)

편집

이 비디오를 봐주세요.https://youtu.be/e2EEin1mf-E

잘 부탁드립니다.

이것은 Mariadb 10.3.29, 10.4.19, 10.5.10의 버그로, 현재는 수정되었지만 아직 릴리스되지 않았습니다.같은 문제에 부딪혀 10.4.18로 되돌아가야 했습니다.

https://jira.mariadb.org/browse/MDEV-25714

Simon이 설명한 바와 같이 이것은 Mariadb 10.3.29, 10.4.19, 10.5.10에 영향을 주는 버그입니다.

회피책으로서(10.3.29에서 테스트 완료) cnf 파일 [mysqld]섹션에서 다음 설정을 적용할 수 있습니다.

optimizer_switch='split_materialized=off'

https://jira.mariadb.org/browse/MDEV-25725

https://jira.mariadb.org/browse/MDEV-25714

utf8mb4에 문제가 있는 것 같습니다.

https://jira.mariadb.org/browse/MDEV-26337

체크: .conf의 character_set_server=utf8mb4

언급URL : https://stackoverflow.com/questions/67681243/mariadb-mysql-bug-group-by-master-in-subquery

반응형