代码:
SELECT *
FROM Vendors
WHERE EXISTS (SELECT Invoices.VendorID
FROM Vendors
WHERE Vendors.VendorID = Invoices.VendorID)
输出:
InvoiceID VendorID InvoiceNumber InvoiceDate InvoiceTotal PaymentTotal CreditTotal TermsID InvoiceDueDate
0 ROWS RETURNED
我得到的错误信息是:
Msg 102,Level 15,State 1,Line 16
' VendorID'附近的语法不正确。
答案 0 :(得分:0)
SELECT *
FROM Vendors
WHERE EXISTS (SELECT Invoices.VendorID
FROM Invoices
WHERE Vendors.VendorID = Invoices.VendorID)
答案 1 :(得分:0)
首先,我们通常不使用“*”作为列列表,因为我们只应选择实际需要的列。不要养成坏习惯。由于我们不了解您的架构以及您尝试做什么(除了基本的不良执行查询),我们必须假设。
因此,我假设您有一个名为Invoices的表,并且您要选择与至少一个发票关联的所有供应商。这就是你如何表达别人可以理解的要求。
select * from dbo.Vendors as vd
where exists (select * from dbo.Invoices as iv where vd.VendorID = iv.VendorID)
order by vd.Name;
但是,它返回供应商信息而不是发票信息。您的“所需输出”显示发票信息 - 但它的确切含义尚不清楚。那么也许您可以打开上面的查询并从发票中选择?如果是这样,您可能根本不需要根据发布的输出加入供应商表。