有条件地在Where子句中使用一列或另一列

时间:2015-10-13 20:46:30

标签: mysql

我正在尝试从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 )))

0 个答案:

没有答案
相关问题