這篇文章主要介紹Mysql位運(yùn)算簡(jiǎn)化一對(duì)多關(guān)系的示例分析,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
10年積累的成都網(wǎng)站建設(shè)、成都網(wǎng)站制作經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有凌云免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。語(yǔ)法
& :
按位與,二進(jìn)制位同時(shí)都為1的位設(shè)為1。| :
按位或,二進(jìn)制位有一個(gè)位為1就為1.^ :
按位異或,對(duì)應(yīng)位的二進(jìn)制數(shù)不同時(shí),對(duì)應(yīng)位的結(jié)果才為1;如果兩個(gè)對(duì)應(yīng)位數(shù)都為0或者都為1,則對(duì)應(yīng)位的結(jié)果為0。
原理
$a = 6 轉(zhuǎn)化為2進(jìn)制為 110 $b = 3 轉(zhuǎn)化為2進(jìn)制為 11 $a & $b即是 110 與 11 將$a和$b中都為1的位設(shè)為1,位數(shù)不夠的補(bǔ)0.即110 與 011 運(yùn)算結(jié)果010,轉(zhuǎn)化為十進(jìn)制結(jié)果為2
應(yīng)用場(chǎng)景
每個(gè)景點(diǎn)包含很多屬性,例如適合旅游的月份,我們一般的做法可能有兩種:
是增加一個(gè)varchar
字段,每個(gè)月份之間用一個(gè)特殊符號(hào)分隔保存,例如:"1,2,22,65,7"
建立一個(gè)關(guān)系表,在這里不能使用1-12的數(shù)字來(lái)表示月份,而是使用1,2,4,8,16,32,64,128,512,1024,2048,4096
來(lái)表示,如果是多個(gè)月份,可以相互組合相加,之后存儲(chǔ)為一個(gè)值。
比如 1,10,12月份,就可以存儲(chǔ)1+512+4096=4609
,4096 這個(gè)值。
這個(gè)技巧適用于屬性較少的一對(duì)多的場(chǎng)景,可以存儲(chǔ)1個(gè)或者多個(gè),太多的話還是推薦試用關(guān)系表。常用的屬性有:月份,消息提醒類型,各種有限的類型組合等等。
使用技巧:
-- 添加一個(gè)分類 用 “|” SELECT (4|2|1); --- = 7 -- 去掉一個(gè)分類,用“^” SELECT 7 ^ 1; -- 當(dāng)我們需要查詢某個(gè)月份的景點(diǎn)時(shí),例如查詢3月份的景點(diǎn),可使用以下語(yǔ)句: SELECT * FROM `spots` WHERE `month` & 4 = 4; -- 當(dāng)設(shè)置某個(gè)景點(diǎn)適合某個(gè)月份時(shí),例如設(shè)置4325的景點(diǎn)適合2月份,可使用下面的語(yǔ)句: UPDATE `spots` SET `month` = `month` | 2 WHERE `id` = 4325 -- 當(dāng)取消設(shè)置某個(gè)景點(diǎn)的月份時(shí),可使用下面的語(yǔ)句: UPDATE `spots` SET` month` = `month` ^ 2 WHERE`id`= 4325 -- 查詢同時(shí)適合多個(gè)月份的數(shù)據(jù),例如需要查詢?cè)O(shè)置了11,12,1月份的景點(diǎn),將其三個(gè)月份對(duì)應(yīng)的數(shù)值加起來(lái),結(jié)果為6145,然后使用這個(gè)數(shù)值進(jìn)行查詢: SELECT * FROM `spots` WHERE `month` & 6145 = 6145 -- 查詢只要適合,1,11,12月份其中一個(gè)月份的景點(diǎn)就行 SELECT * FROM `spots` WHERE (`month` & 4096 = 4096) or (`month` & 2048 = 2048) or (`month` & 1 = 1)
以上是“Mysql位運(yùn)算簡(jiǎn)化一對(duì)多關(guān)系的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
網(wǎng)站題目:Mysql位運(yùn)算簡(jiǎn)化一對(duì)多關(guān)系的示例分析-創(chuàng)新互聯(lián)
標(biāo)題URL:http://aaarwkj.com/article10/dgdego.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號(hào)、企業(yè)網(wǎng)站制作、Google、搜索引擎優(yōu)化、品牌網(wǎng)站制作、網(wǎng)站維護(hù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容