我看了一下这里的各种答案,并做了一些实验。
具体来说,我使用的是MariaDB 10.1。
对于一个“简单”的事情你可以做什么罗伯特·d在他的评论中建议:
SELECT Price_Per_SqFt, (Price_Per_SqFt/2) AS col1, (SELECT col1 + 1) AS col2 FROM Items
如果您正在使用某种形式的聚合函数与内部连接则不能使用,但你可这种做法与内部相结合的方式加入如下(以财务数据货币字段NB增值税=“销售税” ......和NB通常有4位小数,我认为这是历史性的...)
SELECT
invoices.invoiceNo, invoices.clientID, invoices.Date, invoices.Paid,
invoicesWithSubtotal.Subtotal,
ROUND(CAST(Subtotal * invoices.VATRate AS DECIMAL(10, 4)), 2) AS VAT,
(SELECT VAT + Subtotal) AS Total
FROM invoices
INNER JOIN
(SELECT Sum(invoiceitems.Charge) AS Subtotal, invoices.InvoiceNo FROM invoices
INNER JOIN invoiceitems ON invoices.InvoiceNo = invoiceitems.InvoiceNo
GROUP BY invoices.InvoiceNo) invoicesWithSubtotal
ON invoices.InvoiceNo = invoicesWithSubtotal.InvoiceNo
我想用上面的方式创建一个View
来列出发票wi他们的小计,增值税和总计......事实证明,MariaDB(并且几乎可以肯定是MySQL)不允许嵌套在FROM
条款中。然而,通过首先制作第一个View
,其中列出了InvoiceNo
和Subtotal
,然后再制作第二个View
,这引用了第一个。在性能方面,我完全不知道这种双排扣方式。
@OMG小马心灵阐述? “@total_sale:=”是不是足够的声明? – rzetterberg 2011-05-22 01:30:10
这是设置变量,而不是声明它。声明意味着使用'SET'语句或派生表/内联视图。 “ – 2011-05-22 01:31:14
”您也可以在SET以外的语句中为用户变量赋值,在这种情况下,赋值运算符必须为:=和not =,因为后者在非SET语句中被视为比较运算符=“ – rzetterberg 2011-05-22 01:32:46