[英]Select columns from two different tables using a sub-query - not a join
我正在编写一个带有子查询的查询,看起来像这样
USE AP
SELECT VendorName, InvoiceDate, InvoiceNumber, InvoiceTotal
FROM Invoices AS main
WHERE InvoiceTotal >
(SELECT MAX(InvoiceTotal)
FROM Invoices AS sub
WHERE VendorID = 121 AND sub.VendorID = main.VendorID)
ORDER BY VendorName, InvoiceTotal DESC
我在 vendorName 列下得到一个错误标记,因为它不在 Invoices 表中。 它在 Vendors 表中,但不允许我加入这两个表。 有没有办法在结果集中识别并提供该列?
有连接但没有结果
USE AP
SELECT VendorName, InvoiceDate, InvoiceNumber, InvoiceTotal
FROM Invoices AS main JOIN Vendors AS v
ON main.VendorID = v.VendorID
WHERE InvoiceTotal >
(SELECT MAX(InvoiceTotal)
FROM Invoices AS sub
WHERE VendorID = 121 AND sub.VendorID = main.VendorID)
ORDER BY VendorName, InvoiceTotal DESC
如果您真的不想使用连接,您可以尝试嵌套选择(不确定这是否正确)。
例如:
SELECT (SELECT v.VendorName FROM vendors v WHERE main.VendorID = v.VendorID) AS VendorName,
main.InvoiceDate,
main.InvoiceNumber,
main.InvoiceTotal
FROM Invoices AS main
...
没有连接,您可以像下面那样实现它:
USE AP
SELECT
(SELECT VendorName FROM vendors v where v.vendorid = main.vendorid) VendorName,
InvoiceDate,
InvoiceNumber,
InvoiceTotal
FROM Invoices AS main
WHERE InvoiceTotal >
(SELECT MAX(InvoiceTotal)
FROM Invoices AS sub
WHERE VendorID = 121 )
ORDER BY VendorName, InvoiceTotal DESC
如果您在找到具有最大 InvoiceTotal 的发票后,请使用以下查询:
USE AP
SELECT
(SELECT VendorName FROM vendors v where v.vendorid = main.vendorid) VendorName,
InvoiceDate,
InvoiceNumber,
InvoiceTotal
FROM Invoices AS main
WHERE InvoiceTotal >=
(SELECT MAX(InvoiceTotal)
FROM Invoices AS sub
WHERE sub.VendorID = main.VendorID)
ORDER BY VendorName, InvoiceTotal DESC
DB Fiddle 在这里。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.