看板 Database 關於我們 聯絡資訊
小弟正在設計一個系統,可讓使用者寄站內信 於是設計了一個mail的Table如下 ____________________________________________________________________________ id | source_uid | target_uid | title | content | source_del | target_del  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 1 | 2 | 5 | ooo | xxx | 1 | 0 2 | 3 | 2 | ooo | xxx | 0 | 1 source_uid代表寄信人;target_uid代表收件人 寄信人可以看到寄信備份;收件人可以看到寄信的內容 由於信件內容是一樣的,所以做這樣的設計 source_del代表寄信人刪除了 target_del代表收件人刪除了 二個都刪除了才會做真正的delete 現在問題來了,當我要撈使用者寄信與收信的mail id時會有個問題( mySQL ) 假設使用者uid = 2 select * from mail where ( source_uid = 2 or target_uid = 2 ) ↑上面這句可以找出使用者主動寄出的信與被動收到的信 但現在還要加上一個條件當uid是source時source_del需為 0 當uid是target時target_del需為 0 所以會想加上個where條件: 當uid為source時:where source_del = 0 當uid為target時:where target_del = 0 但不曉得怎麼下語法,曾經嚐試用IF,寫成: where IF( source_uid = 2 , source_del, target_del' ) = 0 但行不通,不曉得該如何解決這問題? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.118.209.237 ※ 編輯: jjjkkkooo 來自: 122.118.209.237 (11/08 15:52)
musie:用join... 11/08 15:56
musie:..打錯= =...union 11/08 15:57
jjjkkkooo:SQL真神奇,不一樣的思維很快就能解決問題 11/08 16:11
jjjkkkooo:感謝 musie 大 <(_ _)> 11/08 16:12
chenstin:WHERE (source_uid = 2 AND source_del = 0) OR 11/17 21:28
chenstin:(target_uid = 2 AND target_del = 0) 11/17 21:29