看板 Database 關於我們 聯絡資訊
※ 引述《adrianshum (Alien)》之銘言: : ※ 引述《artingo (2008的三大目標)》之銘言: : : 假設有張資料表如下,記錄每個人會說的語言: : : Table: people_lan : : name language : : ------------------- : : Andy 中文 : : Andy 英文 : : Andy 法文 : : Bob 中文 : : Bob 法文 : : Candy 英文 : : 然後我要找出,"同時"會說中文與英文的人,這SQL句該怎麼下? : : 也就是以這例子來說 : : 要能select出language欄同時有"中文"跟"英文"的Andy這個人 如果能更動欄位結構的話,我會用一個無號整數欄位來當各種 language 的 flag 如果用 8 位元的整數就能記載 8 種語言的狀況,big int 可以記 64 種,要是還不夠, 再加欄位。然後一個人只要有一筆資料。之後用位元運算來維護這個欄位, 這樣 select 也比較容易。 只是要另位做一份參照文件,第一個 bit 是什麼語言,第二個 bit 是什麼語言, 給維護程式的人看。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.80.138.232
artingo:這方法不錯,這樣要查精通多種語言的人就不用很多巢狀結構 05/03 09:25
JoeHorn:可惜 SQL 裡面的運算子不多,這樣作會多操 DB data I/O 。 05/03 11:02