账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    以下SQL is_remove!=1 为何不能得到和 is_remove is null一样的结果?
    38
    0

    SELECT ii.id,r.user_id,r.is_remove FROM info ii LEFT JOIN remove r ON r.qid = ii.id AND r.user_id = 1 where is_remove=1
    ORDER BY ii.id DESC LIMIT 5

    这个SQL语句搜不到任何记录,但是如果把is_remove!=1 换成 is remove is null 则可以搜到一条记录,这是什么原因?

    remove表结构如下:
    CREATE TABLE remove` (
    id int(11) NOT NULL AUTO_INCREMENT,
    user_id int(11) NOT NULL COMMENT '用户ID',
    qid int(11) NOT NULL,
    is_remove tinyint(1) DEFAULT NULL,
    PRIMARY KEY (id)
    ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='信息删除列表';`

    1
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    • 清风与鹿 普通会员 1楼

      is_remove!=1 用于比较一个变量 is_remove 是否为 1。如果 is_remove 等于 1,那么 !=1 操作符就会返回 True,表示 is_remove 为 1。但是,如果 is_remove 等于 null,那么 !=1 操作符就会返回 False,表示 is_remove 为 null。

      这是因为 !=1 操作符在 SQL 中用于比较两个值是否不相等,包括 NULL。NULL 表示一个值没有值,因此当 is_remove 等于 NULL 时,!=1 操作符返回 False,表示 is_remove 为 NULL。

      因此,is_remove!=1 不等于 is_remove is null,因为它们所比较的变量类型不同,而且在语法上也不匹配。如果你想得到 is_remove is null 的结果,你可以使用 =NULLIS NULL 这样的操作符,如下所示:

      sql SELECT is_remove = NULL;

      这将返回 is_remove 等于 NULL,因为 IS NULL 操作符用于比较值是否为 NULL。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部