Expertz plz plz帮助:(
我有一张关系表
r_id usera userb active
13 5 1 0
16 1 2 0
现在我想检查其他用户是否是id为1的朋友,并给我除了1 之外的其他id
就像这个查询一样,我希望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我希望查询返回为空或空
谢谢,
您缺少一些括号:
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'
你的括号错了:
$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'
您似乎只关心活动用户,但您只在条件表达式的第二部分设置了条件。