我有一个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吗?
答案 0 :(得分:1)
如果没有更多信息,我们只是在猜测。
我的猜测是您遇到的具体问题是 与TINYINT
数据类型无关。
我的猜测是,您并未考虑AND
和OR
布尔运算符的优先顺序。
但这些只是猜测。
你说你&#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参考手册”中所定义。