将单个表IF查询与多表连接组合在一起

时间:2017-09-23 23:39:52

标签: mysql

很抱歉,如果标题含糊不清,不确定如何发表意见。

我目前正在从表中选择一个字段的值(包含可点击的SqlFiddle链接):

`Select  `ID`,IF(`SpecificationID` is NULL,'0', `SpecificationID`) from Orders;`

http://www.sqlfiddle.com/#!9/b8108b/8

您可以看到从Orders表中提取了SpecificationID,如果它发现了NULL 0。我知道我可以/应该在我的表中使用默认值= 0但是这样做会需要多次更改代码,因此这是最简单的方法来提取0的NULL值,这是我最终需要的这个过程。

事实证明Orders可以有多个规格,所以我创建了一个带有OrderID和SpecificationID的查找表

我的新查询看起来很喜欢这个:

Select `OrderID`,`SpecificationID` from LUT_Orders_Specifications 
order by OrderID;

http://www.sqlfiddle.com/#!9/b8108b/9

问题在于,由于LUT仅存储具有OrderID的记录的值,因此我不会获得没有值的OrderID,因此不会获得0

我不确定如何/如果我可以执行一个Join,它将从LUT获取值,并返回0以获取不在LUT中的记录。

我知道如何选择不在表格中的ID,例如

Select ID from Orders where ID not in
(Select T1.OrderID from LUT_Orders_Specifications T1
Inner Join Orders T2
on T1.OrderID=T2.ID)

http://www.sqlfiddle.com/#!9/b8108b/15

但我不清楚如何组合这些流程,因此我抓住单个订单的所有规范值和没有规范的订单的0值。

0 个答案:

没有答案