我看了一下這裏的各種答案,並做了一些實驗。
具體來說,我使用的是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