MariaDB create view 将 SELECT 更改为不同的(不正确的)查询
MariaDB create view changes the SELECT to a different (incorrect) query
我有一个查询想作为 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
时,返回的查询是(注意增值税附近缺少括号)
select VAT, SUM(RetailPrice) / 1 + VAT as Sum from ReceiptItem
group by VAT
给出了与原始 SELECT 查询不同的结果 - A / 1 + B
不等于 A / (1 + B)
!
我发现了一个类似的问题 ,但是它处理 MySql 并且查询被更改为等效的,而不是不同的。如何确保正确创建视图?
像这样更改查询并查看结果
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。有效
嗯,似乎是一个错误,考虑向项目报告...作为解决方法,您可以尝试使用派生的 table 仅执行聚合和外部查询,然后执行算术运算在总和上。
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
我有一个查询想作为 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
时,返回的查询是(注意增值税附近缺少括号)
select VAT, SUM(RetailPrice) / 1 + VAT as Sum from ReceiptItem
group by VAT
给出了与原始 SELECT 查询不同的结果 - A / 1 + B
不等于 A / (1 + B)
!
我发现了一个类似的问题
像这样更改查询并查看结果
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。有效
嗯,似乎是一个错误,考虑向项目报告...作为解决方法,您可以尝试使用派生的 table 仅执行聚合和外部查询,然后执行算术运算在总和上。
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