0

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

Name.find_by_sql(['SELECT IFNULL(users.last_name, "nil") FROM users
                  加入 user_groups ON user_groups.user_id = users.id
                  在 groups.id = user_groups.grous_id 上加入组
                  WHERE users.first_name IN (?)', ['Sam','Sally']]) AND groups.name='baseball'

现在山姆在棒球队,但莎莉不在。

我希望我能回来(山姆的姓是希尔)

['山','无']

但我只得到['Hill']。我不知道为什么我没有得到“零”返回。我也在每个连接语句上尝试了“左外连接”,因为我认为这可能是“零”丢失的地方,但我仍然只得到一个返回的项目。

4

1 回答 1

2

您没有收到回复,因为您对 groups.name 的过滤器在WHERE子句中。这只会返回棒球组中的用户。如果您在 处添加条件JOIN,那么您将返回不属于棒球组的用户,并且他们将具有预期的 NULL 值:

JOIN groups ON groups.id = user_groups.grous_id AND groups.name='baseball'
于 2011-08-10T17:52:55.090 回答