中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Mysql位運算簡化一對多關系的示例分析

發布時間:2020-12-18 14:11:52 來源:億速云 閱讀:327 作者:小新 欄目:MySQL數據庫

這篇文章主要介紹Mysql位運算簡化一對多關系的示例分析,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

語法

& : 按位與,二進制位同時都為1的位設為1。
| :  按位或,二進制位有一個位為1就為1.
^ : 按位異或,對應位的二進制數不同時,對應位的結果才為1;如果兩個對應位數都為0或者都為1,則對應位的結果為0。

原理

$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)

以上是“Mysql位運算簡化一對多關系的示例分析”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

寿光市| 唐河县| 靖边县| 无锡市| 前郭尔| 芮城县| 沧州市| 阿坝| 肃南| 新巴尔虎左旗| 玉山县| 正蓝旗| 鄂尔多斯市| 金坛市| 平罗县| 永福县| 海城市| 嘉鱼县| 资讯| 崇文区| 东山县| 彰化市| 磐安县| 攀枝花市| 崇明县| 宁阳县| 新乡市| 吉木萨尔县| 新巴尔虎右旗| 视频| 荔波县| 剑阁县| 珠海市| 瑞昌市| 枝江市| 抚顺县| 读书| 苍溪县| 大宁县| 手机| 岱山县|