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

标签 mysql sql

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

我应该将其更改为tinyint的其他内容吗?

工作

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 表示她是熟女

困难的方法是将 not milf 值设置为不同于 0 的另一个值,但是它不能与 0 一起使用是否有原因?

最佳答案

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

我的猜测是,您遇到的具体问题与 TINYINT 数据类型并不真正相关。

我的猜测是,您没有考虑 ANDOR bool 运算符的优先顺序。

但这些只是猜测。

<小时/>

你说你“打电话”MILF =0 或 MILF !=1。我们认为这意味着它被评估为 bool 表达式,或者作为 SELECT 列表中的表达式,作为函数的参数,在谓词中(即在 WHEREON 子句)、ORDER BY 子句或语句中的其他位置。

你说“它不起作用”并且它“不起作用”。我们认为这意味着您正在执行 SQL 语句,并且该语句返回意外错误,或者 SELECT 语句返回的行不符合您的期望,或者您正在运行某些其他 DML 操作,该操作会产生意外错误结果。

<小时/>

测试用例、示例表、示例数据

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

返回结果集:

    id    milf  milf =1  milf =0  milf !=1  milf <=> NULL  
------  ------  -------  -------  --------  -------------
    10       0        0        1         1              0
    11       1        1        0         0              0
    12       2        0        0         1              0
    13      -1        0        0         1              0
    14  (NULL)   (NULL)   (NULL)    (NULL)              1

该行为如 MySQL 引用手册中所定义。

关于mysql - tinyint 列在调用 =0 时不起作用,但在 =1 时起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24689459/

相关文章:

mysql - 如果在另一个表上匹配,则排除一个表中的行 - MySql

java - 从 SQL JPA native 查询迭代结果时出现问题

php - 查询 MySQL 数据库以插入特定记录

MYSQL 查询按月分割

mysql - MySQL中如何确定缺席者(员工)列表和在场人员列表以及主员工列表?

python - 将 Python dict 与 MySQL 表连接起来

mysql - 为什么 CAST() 函数返回错误的日期?

mysql - 如何将 3 个表的结果合并为一个?

mysql - mysql 中两点之间的距离不起作用?

sql - 来自 Esqueleto 的独特帖子作者