我有一个查询(很长,但这是要点)

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/

10-15 19:03