1

我有以下查询:

SELECT * FROM my_users as U 
RIGHT JOIN subscribers AS S ON S.userid = U.user_id 
WHERE S.approved > 0 AND S.channel_id = 1 AND S.alert_level >= 90

如果我取消最后一个 AND 子句(AND S.alert_level >= 90),搜索将完全按预期工作。离开最后一个 AND 子句,我得到一个空的结果集。

显然,我检查了订阅者表以确保将返回的用户 ID 具有正确的 alert_level 并且他们都有 90,所以这应该返回 2 个用户......并且 S.alert_level 是一个 smallint(6)。

我在这里遗漏了一些明显的东西吗?

谢谢!

4

1 回答 1

1

检查此查询的结果:

SELECT * FROM my_users as U 
RIGHT JOIN subscribers AS S ON S.userid = U.user_id 
WHERE S.approved > 0 AND S.channel_id = 1

请注意S.alert_level为该结果集中的每一行返回的值。它可能不会超过 90。这就解释了为什么添加最后一个条件不会给你任何行。

于 2012-05-09T20:40:39.897 回答