在调用= 0但是= 1时,tinyint列不起作用

时间:2014-07-11 03:06:45

标签: mysql sql

我有一个1s和0s的列,当我调用MILF = 1时,它的效果非常好 但是当我调用MILF = 0或MILF!= 1时,它在tinyint列上缺少什么不起作用?

我应该把它改成其他的tinyint吗?

WORKS

SELECT   `MILF`,`page`,`img`,`Name`,`item`, (`totalrate` / `nrrates`),
         @rank_count := @rank_count + (totalrate/nrrates < @prev_value) rank,
         @prev_value := totalrate/nrrates avg
FROM     table, (SELECT @prev_value := NULL, @rank_count := 1) init
WHERE MILF =1 ORDER BY avg DESC

不工作

    SELECT   `MILF`,`page`,`img`,`Name`,`item`, (`totalrate` / `nrrates`),
             @rank_count := @rank_count + (totalrate/nrrates < @prev_value) rank,
             @prev_value := totalrate/nrrates avg
    FROM     table, (SELECT @prev_value := NULL, @rank_count := 1) init
WHERE MILF =0 ORDER BY avg DESC

有一个零和一的MILF列 0意味着她不是一个摩洛伊斯兰解放阵线,并且该值设置为默认值 1意味着她是一个摩洛伊斯兰解放阵线

困难的方法是将非milf值设置为另一个不同于0的值,但是有一个原因它不适用于0吗?

1 个答案:

答案 0 :(得分:1)

如果没有更多信息,我们只是在猜测。

我的猜测是您遇到的具体问题是 TINYINT数据类型无关。

我的猜测是,您并未考虑ANDOR布尔运算符的优先顺序。

但这些只是猜测。


你说你&#34;打电话&#34;的 MILF =0 or MILF !=1 即可。我们认为这意味着它被作为布尔表达式进行评估,作为SELECT列表中的表达式,作为函数的参数,作为谓词(即WHERE或{{ 1}}子句),在ON子句中,或在语句中的其他位置。

你说那是&#34;它不起作用&#34;它没有工作&#34;。我们认为这意味着您正在执行SQL语句,并且该语句返回意外错误,或者SELECT语句返回的行不符合您的期望,或者您正在运行其他一些DML操作,即产生意想不到的结果。


测试用例,样本表,样本数据

ORDER BY

示例查询

CREATE TABLE mytable (id INT UNSIGNED PRIMARY KEY, milf TINYINT);
INSERT INTO mytable (id,milf) VALUES (10,0),(11,1),(12,2),(13,-1),(14,NULL);

结果集返回:

SELECT id
     , milf
     , milf =1
     , milf =0
     , milf !=1
     , milf <=> NULL
  FROM mytable
 ORDER BY id

行为如“MySQL参考手册”中所定义。