很抱歉,如果标题含糊不清,不确定如何发表意见。
我目前正在从表中选择一个字段的值(包含可点击的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
值。