我在MySQL中遇到了一个相当奇怪的语法,特别是在下面的查询中的where条件中出现了一个'—'符号.

SELECT 
    users.id
FROM
    users
WHERE
    users.account_status >= 3
        AND users.account_status NOT IN (8 , 9)
        AND - users.registration_status = 14
        AND users.id IN (229);

我已经研究过here年了?

它是否可能指示'registration_status'列的值转换成负数?

推荐答案

unary minus接线员.以下表达式都是等价的:

  • - users.registration_status = 14
  • 0 - users.registration_status = 14
  • users.registration_status = -14

后者可能是最明显的(代码清晰度很重要!)

Mysql相关问答推荐

如何使RST(*)在巨大的数据集上快速执行?

嵌套MySQL语句问题

我如何才能从MySQL过程中获取LARAVEL端的数据?

不分组寻呼

MySQL-如何检测时间戳中的一天

可以优化这个带有重复WHERE子句的查询吗?

比较2个mysql json数据类型列

docker-compose:无法将应用程序服务连接到 mysql 数据库,收到错误:用户‘root’@‘localhost’访问被拒绝(使用密码:YES)

按唯一列排序,但保持匹配的列在一起

为什么我的 SQL 查询不更新 Node.js 和 MySQL 中用户以外的用户属性?

Select 分组产品的数量和每个产品的最便宜的价格

提取 MySQL 5.7 连续值的差异

基于 3 个条件 Select 3 行的最佳 MySQL 索引和查询

基于 2 列的重复行的 SQL 查询

MySQL - 计算行重复的最大计数

在 MySQL 的存储过程中调用存储过程

SQLSTATE [42000]:语法错误或访问冲突:1055 SELECT 列表的表达式 #3 不在 GROUP BY 子句中并且包含非聚合

从另一个表中 Select 具有 id 的行

mysql错误'TYPE = MyISAM'

获取最后一组不同的记录