我得到查询
SELECT DISTINCT InvoiceNumber, InvoiceDate, InvoiceTotal
FROM Invoices JOIN InvoiceLineItems
ON Invoices.InvoiceID = InvoiceLineItems.InvoiceID
WHERE InvoiceLineItemAmount > 50
ORDER BY InvoiceTotal
并要求使用子查询重写它。我尝试写
SELECT DISTINCT InvoiceNumber, InvoiceDate, InvoiceTotal
FROM Invoices
WHERE InvoiceLineItemAmount > <-----------get error saying the column isn't recognized
(SELECT InvoiceLineItemAmount
FROM InvoiceLineItems
WHERE InvoiceLineItemAmount > 50)
ORDER BY InvoiceTotal
但是我收到错误消息说无法识别该列?
请尝试以下方法:
SELECT i.InvoiceNumber, i.InvoiceDate, i.InvoiceTotal
FROM Invoices i
WHERE i.InvoiceID in (select InvoiceID from InvoiceLineItems where InvoiceLineItemAmount > 50)
ORDER BY i.InvoiceTotal
JOIN
相关的子查询:EXISTS
请注意,不再需要SELECT i.InvoiceNumber, i.InvoiceDate, i.InvoiceTotal
FROM Invoices i
WHERE EXISTS (SELECT 1
FROM InvoiceLineItems ili
WHERE ili.InvoiceID = i.InvoiceID AND
ili.InvoiceLineItemAmount > 50
)
ORDER BY i.InvoiceTotal;
。使用正确的索引,它应该比原始版本快得多。