반응형
MariaDB 생성 뷰가 SELECT를 다른(잘못된) 쿼리로 변경합니다.
MariaDB 10.3(win)의 뷰로 하고 싶은 쿼리가 있습니다만, 이러한 뷰를 작성하려고 하면 다른 뷰(잘못된 뷰)로 변경되어 괄호를 삭제합니다.
create or replace view v_ReceiptSumByVAT
as
select VAT, SUM(RetailPrice) / (1 + VAT) as Sum from ReceiptItem
group by VAT
를 실행할 때SELECT VIEW_DEFINITION
나중에 반환되는 쿼리는 다음과 같습니다(VAT 근처에 괄호가 없습니다).
select VAT, SUM(RetailPrice) / 1 + VAT as Sum from ReceiptItem
group by VAT
원래 SELECT 쿼리와는 다른 결과를 얻을 수 있습니다.A / 1 + B
와 동등하지 않다A / (1 + B)
!
mysql이 왜 내 코드 뷰를 바꾸는지 비슷한 질문을 찾았습니다.단, MySql과 쿼리는 다른 쿼리가 아닌 동등한 쿼리로 변경됩니다.뷰가 올바르게 작성되도록 하려면 어떻게 해야 합니까?
흠, 버그가 있는 것 같은데, 프로젝트에 보고하는 것을 고려해보세요.회피책으로 집계를 수행하는 파생 테이블과 합계에 대한 산술 연산을 수행하는 외부 쿼리만 사용할 수 있습니다.
CREATE VIEW v_receiptsumbyvat
AS
SELECT vat,
sum / (vat + 1) sum
FROM (SELECT vat,
sum(retailprice) sum
FROM receiptitem
GROUP BY vat) x;
적어도 db <>fiddle은 동작하고 있는 것 같습니다.
MariaDB 서버의 버그입니다.
상태를 확인하려면 MariaDB의 버그 티켓 시스템에서 MDEV-23656을 확인하십시오.
이렇게 쿼리를 변경하여 결과를 확인합니다.
create or replace view v_ReceiptSumByVAT
as
select ROUND(VAT, 1 / (1 + VAT) * SUM(RetailPrice)) as Sum from ReceiptItem
group by VAT
MySQL/MariaDB에서는 함수 뒤에 식이 지정되어 있으면 괄호를 삭제하므로 함수 앞에 exp를 지정합니다.그건 효과가 있다.
언급URL : https://stackoverflow.com/questions/63702231/mariadb-create-view-changes-the-select-to-a-different-incorrect-query
반응형
'programing' 카테고리의 다른 글
오브젝트 메모리주소에의 액세스 (0) | 2022.09.28 |
---|---|
jQuery를 사용하여 URL로 이동하는 방법 (0) | 2022.09.28 |
Node.js의 안전한 랜덤 토큰 (0) | 2022.09.28 |
빈 배열 요소 제거 (0) | 2022.09.28 |
Python 유닛 테스트는 어디로 진행됩니까? (0) | 2022.09.28 |