当我调用 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
数据类型并不真正相关。
我的猜测是,您没有考虑 AND
和 OR
bool 运算符的优先顺序。
但这些只是猜测。
<小时/>你说你“打电话”MILF =0 或 MILF !=1
。我们认为这意味着它被评估为 bool 表达式,或者作为 SELECT 列表中的表达式,作为函数的参数,在谓词中(即在 WHERE
或 ON
子句)、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/