当前位置:首页 > 技术教程 > 数据库 > MySQL实用sql语句之根据版本号作为查询条件来过滤数据

MySQL实用sql语句之根据版本号作为查询条件来过滤数据

admin2022-11-27 11:49:40数据库4500

需求背景:

    项目开发中,要求给特定版本号的用户推送消息,需要根据版本号作为查询条件来过滤用户数据。例如,项目中有一张用户表,表名:t_user,需要给版本号 <= 1.2.9的用户推送消息。

数据表结构:

  • t_user表结构:

CREATE TABLE `t_user` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '用户ID',
  `device_id` varchar(50) NOT NULL COMMENT '客户端设备号',
  `version` varchar(20) NOT NULL COMMENT '客户端版本号',
  `created_at` datetime NOT NULL COMMENT '用户创建时间',
  `updated_at` datetime NOT NULL COMMENT '用户数据最近一次更新时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COMMENT='用户数据表';
  • t_user表数据:

image.png

查询版本号 <= 1.2.9的用户数据:

  • 错误的查询:

-- 错误的查询:用户ID = 3(版本号=1.2.12)的数据也被查询出来了
select * from `demo`.`t_user` where version <= "1.2.9";

image.png


  • 正确查询:

-- 正确查询
select * from `demo`.`t_user` where 
cast(
	concat(
		substring_index(substring_index(version, '.', 1), '.', -1),
		substring_index(substring_index(version, '.', 2), '.', -1),
		substring_index(substring_index(version, '.', 3), '.', -1)
	) as signed
) <= 129;

image.png


扫描二维码推送至手机访问。

版权声明:本文由1688资源网发布,如需转载请注明出处。

本文链接:https://1688ziyuan.com/article/71.html

标签: mysqlsql语句
分享给朋友:

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。