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
'programing' 카테고리의 다른 글
루멘과 라라벨의 차이점과 유사점 (0) | 2022.09.18 |
---|---|
Liquibase/MariaDB 또는 Mysql에 대한 FULLTEXT 지수 (0) | 2022.09.18 |
내 Python 어플리케이션에서 전송되는 전체 HTTP 요청을 보려면 어떻게 해야 합니까? (0) | 2022.09.18 |
인덱스를 사용하여 panda DataFrame의 특정 셀 값 설정 (0) | 2022.09.18 |
MySql 표시 성능 (0) | 2022.09.18 |