0

0

介绍Mysql位运算简化一对多关系

coldplay.xixi

coldplay.xixi

发布时间:2020-12-18 09:21:26

|

3568人浏览过

|

来源于简书

转载

mysql教程栏目介绍位运算简化一对多关系

介绍Mysql位运算简化一对多关系

推荐(免费):mysql教程

语法

& : 按位与,二进制位同时都为1的位设为1。
| :  按位或,二进制位有一个位为1就为1.
^ : 按位异或,对应位的二进制数不同时,对应位的结果才为1;如果两个对应位数都为0或者都为1,则对应位的结果为0。

原理

爱克网络企业网站建设系统 No.090730
爱克网络企业网站建设系统 No.090730

系统特点:功能简洁实用。目前互联网上最简洁的企业网站建设系统!原创程序代码。非网络一般下载后修改的代码。更安全。速度快!界面模版分离。原创的分离思路,完全不同于其他方式,不一样的简单感受!搜索引擎优化。做了基础的seo优化。对搜索引擎更友好系统功能关于我们:介绍企业介绍类信息,可自由添加多个介绍栏目!资讯中心:公司或行业资讯类内容展示。可自由添加多个资讯内容!产品展示:支持类别设置,可添加产品图片

下载
$a = 6 转化为2进制为 110
$b = 3 转化为2进制为 11
$a & $b即是 110 与 11
将$a和$b中都为1的位设为1,位数不够的补0.即110 与 011
运算结果010,转化为十进制结果为2

应用场景

每个景点包含很多属性,例如适合旅游的月份,我们一般的做法可能有两种:

  1. 是增加一个varchar字段,每个月份之间用一个特殊符号分隔保存,例如:"1,2,22,65,7"
  2. 建立一个关系表,在这里不能使用1-12的数字来表示月份,而是使用1,2,4,8,16,32,64,128,512,1024,2048,4096来表示,如果是多个月份,可以相互组合相加,之后存储为一个值。
    比如 1,10,12月份,就可以存储1+512+4096=4609,4096 这个值。
这个技巧适用于属性较少的一对多的场景,可以存储1个或者多个,太多的话还是推荐试用关系表。常用的属性有:月份,消息提醒类型,各种有限的类型组合等等。

使用技巧:

-- 添加一个分类 用 “|”
SELECT (4|2|1); --- = 7

-- 去掉一个分类,用“^”
SELECT 7 ^ 1;

-- 当我们需要查询某个月份的景点时,例如查询3月份的景点,可使用以下语句:
SELECT * FROM `spots` WHERE `month` & 4 = 4;

-- 当设置某个景点适合某个月份时,例如设置4325的景点适合2月份,可使用下面的语句:
    
UPDATE `spots` SET `month` = `month` | 2 WHERE `id` = 4325

-- 当取消设置某个景点的月份时,可使用下面的语句:
UPDATE `spots` SET` month` = `month` ^ 2 WHERE`id`= 4325

-- 查询同时适合多个月份的数据,例如需要查询设置了11,12,1月份的景点,将其三个月份对应的数值加起来,结果为6145,然后使用这个数值进行查询:

SELECT * FROM `spots` WHERE `month` & 6145 = 6145

-- 查询只要适合,1,11,12月份其中一个月份的景点就行
SELECT * FROM `spots` WHERE (`month` & 4096 = 4096) or (`month` & 2048 = 2048) or (`month` & 1 = 1)

相关专题

更多
微信聊天记录删除恢复导出教程汇总
微信聊天记录删除恢复导出教程汇总

本专题整合了微信聊天记录相关教程大全,阅读专题下面的文章了解更多详细内容。

2

2026.01.18

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

74

2026.01.16

全民K歌得高分教程大全
全民K歌得高分教程大全

本专题整合了全民K歌得高分技巧汇总,阅读专题下面的文章了解更多详细内容。

133

2026.01.16

C++ 单元测试与代码质量保障
C++ 单元测试与代码质量保障

本专题系统讲解 C++ 在单元测试与代码质量保障方面的实战方法,包括测试驱动开发理念、Google Test/Google Mock 的使用、测试用例设计、边界条件验证、持续集成中的自动化测试流程,以及常见代码质量问题的发现与修复。通过工程化示例,帮助开发者建立 可测试、可维护、高质量的 C++ 项目体系。

54

2026.01.16

java数据库连接教程大全
java数据库连接教程大全

本专题整合了java数据库连接相关教程,阅读专题下面的文章了解更多详细内容。

39

2026.01.15

Java音频处理教程汇总
Java音频处理教程汇总

本专题整合了java音频处理教程大全,阅读专题下面的文章了解更多详细内容。

19

2026.01.15

windows查看wifi密码教程大全
windows查看wifi密码教程大全

本专题整合了windows查看wifi密码教程大全,阅读专题下面的文章了解更多详细内容。

106

2026.01.15

浏览器缓存清理方法汇总
浏览器缓存清理方法汇总

本专题整合了浏览器缓存清理教程汇总,阅读专题下面的文章了解更多详细内容。

44

2026.01.15

ps图片相关教程汇总
ps图片相关教程汇总

本专题整合了ps图片设置相关教程合集,阅读专题下面的文章了解更多详细内容。

11

2026.01.15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
计算机系统从应用层到底层
计算机系统从应用层到底层

共6课时 | 0.3万人学习

php初学者入门课程
php初学者入门课程

共10课时 | 0.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号