Sql语句条件在where子句中

时间:2017-12-13 08:49:09

标签: mysql sql mariadb

我在为sql查询创建where语句条件时遇到问题。

我希望添加where条件不显示num1num2值,如果它们都等于零或者其中任何一个等于零

SELECT Num1, Num2
FROM Position
WHERE  (Num1 IS NOT NULL AND Num2 IS > NOT NULL)
ORDER BY PositionDateTime DESC ;

结果:

    +---------+---------+
    | Num1    | Num2    |
    +---------+---------+
    |
    | 47.3941 | 8.68005 |
    |       0 |       0 |
    | 47.4385 | 8.61106 |
    | 47.4385 | 8.61106 |

7 个答案:

答案 0 :(得分:5)

试试这个:

 SELECT Num1, Num2 
    FROM Position 
    WHERE Num1 <> 0  
    OR Num2 <> 0
    ORDER BY PositionDateTime DESC ;

答案 1 :(得分:0)

您可以使用直接<>运算符:

SELECT   Num1, Num2 
FROM     Position
WHERE    Num1 IS NOT NULL AND Num1 <> 0 AND
         Num2 IS NOT NULL AND Num2 <> 0
ORDER BY PositionDateTime DESC

您还可以使用coalesce使查询更加优雅,尽管这可能是个人品味的问题:

SELECT   Num1, Num2 
FROM     Position
WHERE    COALESCE(Num1, 0) <> 0 AND
         COALESCE(Num2. 0) <> 0
ORDER BY PositionDateTime DESC

答案 2 :(得分:0)

您可以使用IFNULL

来使用以下内容
SELECT Num1, Num2 
FROM Position 
WHERE IFNULL(Num1, 0) <> 0 AND IFNULL(Num2, 0) <> 0
ORDER BY PositionDateTime DESC
  

演示: http://sqlfiddle.com/#!9/3a441a/1/0

说明: 如果两个值(Num1Num2)均为0,则您不想显示一行(或NULL)或者其中一个值(Num1Num2)是0(或NULL)。因此,您只想显示两个值(Num1Num2)的值不等于0(和NULL)的行。因此,您可以使用Num1 <> 0 AND Num2 <> 0作为条件。要为NULL设置默认值,可以使用IFNULL(第二个参数是将使用的值而不是NULL)。在MySQL中,IFNULL(Num1, 0) <> 0 AND IFNULL(Num2, 0) <> 0Num1 <> 0 AND Num2 <> 0

之间不应有区别
  

扩展演示: http://sqlfiddle.com/#!9/11f2a5/1/1

答案 3 :(得分:0)

您只需将查询更改为:

即可
df.columns = range(1,df.shape[1] + 1)

答案 4 :(得分:0)

尝试:Num1&lt;&gt; 0和Num2&lt;&gt; 0

答案 5 :(得分:0)

SELECT Num1, Num2 
FROM Position 
WHERE (Num1 is not null and Num2 is not null)
ORDER BY PositionDateTime DESC

答案 6 :(得分:-1)

<td align="center">
    <a href="#">Set Now</a>
</td>`