此查询 (InvoiceID) 出现不明确的列名错误。我不知道为什么。它们似乎都已正确连接,那么为什么 SSMS 不知道显示 VendorID?
询问:
SELECT
VendorName, InvoiceID, InvoiceSequence, InvoiceLineItemAmount
FROM Vendors
JOIN Invoices ON (Vendors.VendorID = Invoices.VendorID)
JOIN InvoiceLineItems ON (Invoices.InvoiceID = InvoiceLineItems.InvoiceID)
WHERE
Invoices.InvoiceID IN
(SELECT InvoiceSequence
FROM InvoiceLineItems
WHERE InvoiceSequence > 1)
ORDER BY
VendorName, InvoiceID, InvoiceSequence, InvoiceLineItemAmount
原文由 jaielob 发布,翻译遵循 CC BY-SA 4.0 许可协议
当我们通过连接表从 多个表 中选择数据并且 至少一个选定的列(使用 \* 选择所有列时也会发生) 在多个表中存在同名 时,我们会遇到此错误(我们选择的/加入的表)。在这种情况下,我们必须指定从哪个表中选择列。
以下是上述概念的示例解决方案实现
我认为您仅在
InvoiceID
中存在歧义,在InvoiceLineItems
和Invoices
中都存在其他字段似乎不同。所以试试这个我只是用 Invoices.InvoiceID 替换 InvoiceID
您可以在不使用任何别名的情况下对所有列(在选择、位置、分组依据和排序依据)使用 tablename.columnnae。但是,您可以按照其他答案的指导使用别名