作者jjjkkkooo (接科噎欧)
看板Database
标题[SQL ] 动态的where条件 ?
时间Tue Nov 8 15:51:11 2011
小弟正在设计一个系统,可让使用者寄站内信
於是设计了一个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)
1F:推 musie:用join... 11/08 15:56
2F:→ musie:..打错= =...union 11/08 15:57
3F:→ jjjkkkooo:SQL真神奇,不一样的思维很快就能解决问题 11/08 16:11
4F:→ jjjkkkooo:感谢 musie 大 <(_ _)> 11/08 16:12
5F:→ chenstin:WHERE (source_uid = 2 AND source_del = 0) OR 11/17 21:28
6F:→ chenstin:(target_uid = 2 AND target_del = 0) 11/17 21:29