Expertz plz plz HELP :(
我有一张关系表
r_id usera userb active
13 5 1 0
16 1 2 0
现在我想检查一些其他用户是否是id为1的朋友并给我其他ID除了1
与此查询类似,我希望ans为空,因为不满足条件active = 1
如果条件返回true,则表示结果为5,2
所以我形成了这个查询
注意:user_id会根据会话继续更改
$user_id = 1
SELECT CASE
WHEN `usera`=$user_id
THEN `userb`
ELSE `usera` END
FROM `relationship`
WHERE `usera`=$user_id
OR `userb`=$user_id and `active`='1'
现在问题是即使条件不满足(即active = 1)它仍然给我userb 我希望查询返回为空或null
谢谢,
答案 0 :(得分:0)
你遗漏了一些括号:
SELECT CASE
WHEN `usera`=$user_id
THEN `userb`
ELSE `usera` END
FROM `relationship`
WHERE `usera`=$user_id
OR (`userb`=$user_id and `active`='1')
甚至可能是您正在寻找的东西:
SELECT CASE
WHEN `usera`=$user_id
THEN `userb`
ELSE `usera` END
FROM `relationship`
WHERE (`usera`=$user_id OR `userb`=$user_id)
and `active`='1'
答案 1 :(得分:0)
你的括号错了:
$user_id = 1
SELECT CASE
WHEN `usera`=$user_id
THEN `userb`
ELSE `usera` END
FROM `relationship`
WHERE (`usera`=$user_id OR `userb`=$user_id) and `active`='1'
您似乎只关心活跃用户,但您只是将条件放在条件表达式的第二部分上。