C# SQL server条件联接
我必须根据一个可以为null的值选择相应的列来连接。 详细内容:C# SQL server条件联接,c#,asp.net,mysql,sql,sql-server,C#,Asp.net,Mysql,Sql,Sql Server,我必须根据一个可以为null的值选择相应的列来连接。 详细内容: SELECT shoporders.orderid, shopaddresses.companyname, shopaddresses.firstname, shopaddresses.lastname, shopaddresses.address1, FROM shoporders INNER JOIN shopaddresses ON shoporders
SELECT shoporders.orderid,
shopaddresses.companyname,
shopaddresses.firstname,
shopaddresses.lastname,
shopaddresses.address1,
FROM shoporders
INNER JOIN shopaddresses
ON shoporders.InvoiceAddressId = shopaddresses.addressid
where orderid = 110
order by shoporders.createddate desc
如果shoporders.InvoiceAddressId为空,则我必须使用shoporders.DeliveryAddressId
有线索吗
提前谢谢您可以试试
ON coalesce(shoporders.InvoiceAddressId, shoporders.DeliveryAddressId) = shopaddresses.addressid
SELECT shoporders.orderid,
shopaddresses.companyname,
shopaddresses.firstname,
shopaddresses.lastname,
shopaddresses.address1,
FROM shoporders
INNER JOIN shopaddresses
ON COALESCE (shoporders.InvoiceAddressId, shoporders.DeliveryAddressId) = shopaddresses.addressid
where orderid = 110
order by shoporders.createddate desc
编辑:有关合并的定义,请参阅。总结如下
返回其参数中的第一个非空表达式COALESCE(表达式1,…n)
相当于以下CASE
表达式:
CASE
WHEN (expression1 IS NOT NULL) THEN expression1
WHEN (expression2 IS NOT NULL) THEN expression2
...
ELSE expressionN
END
你可以试试
SELECT shoporders.orderid,
shopaddresses.companyname,
shopaddresses.firstname,
shopaddresses.lastname,
shopaddresses.address1,
FROM shoporders
INNER JOIN shopaddresses
ON(
(shoporders.InvoiceAddressId IS NOT NULL
AND shoporders.InvoiceAddressId = shopaddresses.addressid)
OR (shoporders.DeliveryAddressId = shopaddresses.addressid)
)
WHERE orderid = 110
ORDER BY shoporders.createddate DESC