内部连接中的 OR 运算符
OR Operator in inner join
我有疑问。
SELECT VendorID,VendorName,VendorType,FirstName,LastName,
VendorCompany,Contact,Phone,AltContact,Email,OpeningBalance,OpeningDate,VendorAccountNo ,Photo,VendorNotes FROM
Vendor inner JOIN VendorTypeTable ON Vendor.VendorTypeID=VendorTypeTable.VendorTypeID
现在另一方面,我还想检索那些 VendorTypeID 为空的供应商,就像这个查询一样。
SELECT VendorID,VendorName,FirstName,LastName,
VendorCompany,Contact,Phone,AltContact,Email,OpeningBalance,OpeningDate,VendorAccountNo ,Photo,VendorNotes FROM
Vendor WHERE VendorTypeID IS NULL;
如何组合这两个查询。
像这样
SELECT vendorid,
vendorname,
vendortype,
firstname,
lastname,
vendorcompany,
contact,
phone,
altcontact,
email,
openingbalance,
openingdate,
vendoraccountno,
photo,
vendornotes
FROM vendor
INNER JOIN vendortypetable
ON vendor.vendortypeid = vendortypetable.vendortypeid
OR vendor.vendortypeid IS NULL
你也可以像这样使用左外连接
SELECT vendorid,
vendorname,
vendortype,
firstname,
lastname,
vendorcompany,
contact,
phone,
altcontact,
email,
openingbalance,
openingdate,
vendoraccountno,
photo,
vendornotes
FROM vendor
left outer JOIN vendortypetable
ON vendor.vendortypeid = vendortypetable.vendortypeid
虽然@Fireblade 是绝对正确的,但如果您有两个查询返回相同的字段,有时 UNION 是正确的答案。这使您可以独立调整每个的性能。
SELECT VendorID,VendorName,VendorType,FirstName,LastName,
VendorCompany,Contact,Phone,AltContact,Email,
OpeningBalance,OpeningDate,VendorAccountNo ,Photo,VendorNotes FROM
Vendor inner JOIN VendorTypeTable ON
Vendor.VendorTypeID=VendorTypeTable.VendorTypeID
UNION
SELECT VendorID,VendorName,FirstName,LastName, VendorCompany,
Contact,Phone,AltContact,Email,OpeningBalance,OpeningDate,
VendorAccountNo ,Photo,VendorNotes FROM
Vendor WHERE VendorTypeID IS NULL;
我有疑问。
SELECT VendorID,VendorName,VendorType,FirstName,LastName,
VendorCompany,Contact,Phone,AltContact,Email,OpeningBalance,OpeningDate,VendorAccountNo ,Photo,VendorNotes FROM
Vendor inner JOIN VendorTypeTable ON Vendor.VendorTypeID=VendorTypeTable.VendorTypeID
现在另一方面,我还想检索那些 VendorTypeID 为空的供应商,就像这个查询一样。
SELECT VendorID,VendorName,FirstName,LastName,
VendorCompany,Contact,Phone,AltContact,Email,OpeningBalance,OpeningDate,VendorAccountNo ,Photo,VendorNotes FROM
Vendor WHERE VendorTypeID IS NULL;
如何组合这两个查询。
像这样
SELECT vendorid,
vendorname,
vendortype,
firstname,
lastname,
vendorcompany,
contact,
phone,
altcontact,
email,
openingbalance,
openingdate,
vendoraccountno,
photo,
vendornotes
FROM vendor
INNER JOIN vendortypetable
ON vendor.vendortypeid = vendortypetable.vendortypeid
OR vendor.vendortypeid IS NULL
你也可以像这样使用左外连接
SELECT vendorid,
vendorname,
vendortype,
firstname,
lastname,
vendorcompany,
contact,
phone,
altcontact,
email,
openingbalance,
openingdate,
vendoraccountno,
photo,
vendornotes
FROM vendor
left outer JOIN vendortypetable
ON vendor.vendortypeid = vendortypetable.vendortypeid
虽然@Fireblade 是绝对正确的,但如果您有两个查询返回相同的字段,有时 UNION 是正确的答案。这使您可以独立调整每个的性能。
SELECT VendorID,VendorName,VendorType,FirstName,LastName,
VendorCompany,Contact,Phone,AltContact,Email,
OpeningBalance,OpeningDate,VendorAccountNo ,Photo,VendorNotes FROM
Vendor inner JOIN VendorTypeTable ON
Vendor.VendorTypeID=VendorTypeTable.VendorTypeID
UNION
SELECT VendorID,VendorName,FirstName,LastName, VendorCompany,
Contact,Phone,AltContact,Email,OpeningBalance,OpeningDate,
VendorAccountNo ,Photo,VendorNotes FROM
Vendor WHERE VendorTypeID IS NULL;