[SQL ] 動態的where條件 ?

看板Database作者 (接科噎歐)時間14年前 (2011/11/08 15:51), 編輯推噓1(105)
留言6則, 3人參與, 最新討論串1/1
小弟正在設計一個系統,可讓使用者寄站內信 於是設計了一個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)

11/08 15:56, , 1F
用join...
11/08 15:56, 1F

11/08 15:57, , 2F
..打錯= =...union
11/08 15:57, 2F

11/08 16:11, , 3F
SQL真神奇,不一樣的思維很快就能解決問題
11/08 16:11, 3F

11/08 16:12, , 4F
感謝 musie 大 <(_ _)>
11/08 16:12, 4F

11/17 21:28, , 5F
WHERE (source_uid = 2 AND source_del = 0) OR
11/17 21:28, 5F

11/17 21:29, , 6F
(target_uid = 2 AND target_del = 0)
11/17 21:29, 6F
文章代碼(AID): #1EkDzo6z (Database)