我有一个查询(很长,但这是要点)
Name.find_by_sql(['SELECT IFNULL(users.last_name,“ nil”)来自用户
加入user_groups ON user_groups.user_id = users.id
加入网上论坛groups.id = user_groups.grous_id
在哪里users.first_name IN(?)',['Sam','Sally']])和groups.name ='baseball'
现在,山姆参加了棒球团体,但萨莉不在。
我希望我能回来(山姆的姓氏是希尔)
['Hill','nil']
但是我只会得到['Hill']。
我不确定为什么我没有得到“零”的回报。
我也尝试过在每个join语句上使用“ LEFT OUTER JOIN”,因为我认为这可能是丢失“ nil”的地方,但我仍然只获得了其中一项。
最佳答案
您没有得到响应,因为您对groups.name的过滤器位于WHERE
子句中。这只会返回棒球组中的用户。如果在JOIN
处添加条件,则将获得不属于棒球组的用户,并且他们将具有预期的NULL值:
JOIN groups ON groups.id = user_groups.grous_id AND groups.name='baseball'
关于mysql - 为什么我不能从rails中获得ifnull的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7015324/