我正在尝试从MySQL表中有条件地从两列中的一列返回行,具体取决于哪些是NULL而哪些不是。
在以下示例中,如果subNetOfID的值不为NULL并且我查询subNetOfID值为1,则返回行3,4,5,6。
但是,如果我要求subNetOfID为2,那么我想要与之相关的行。在这种情况下1,2,5,6,因为行1,2是基于NetID的父行到3,4,并且subNetOfID值是相同的。
包含四列的简单表:
Fname Lname NetID subNetOfID Bob Smith 1 NULL Jon Jones 1 NULL Cam Tomes 2 1 Bill Holt 2 1 Tom Hanks 3 1 Phil Howard 3 1
If my query is subNetOfID=
1, Return rows 3 to 6 (the subNetOfIDvalue is 1) --> This part is easy.
2, Return rows 1,2,5,6 (NetID is 1 or subNetOfIDis 1) -->
3, Return rows 1,2,3,4 (NetID is 1 or subNetOfIDis 1) -->
我尝试了各种各样的查询,这些是我的最新查询。但让它适用于所有三种可能性是让我适应。我需要做些什么来使它适用于所有三种情况?
SELECT Fname, Lname, NetID, subNetOfID FROM `NetLog`
HAVING ((NetID != 0 AND subNetOfID = 2) OR
(subNetOfID IS NOT NULL AND subNetOfID != '') AND (NetID = 2))
SELECT *, subNetOfID as NID FROM NetLog
HAVING((subNetOfID = 2)
OR (subNetOfID != 2
AND (subNetOfID = NID AND NetID != 2 )))