我使用此查询获得前50条记录。但是,同一个表中有一个名为read
的标记,我只想返回前{50}个不是read
的记录(即isread=false
)。我怎样才能做到这一点?有人可以给我所需查询的想法吗?我尝试过使用子查询。
SELECT * FROM notification WHERE toUserId = 'email' ORDER BY id DESC LIMIT 50;
答案 0 :(得分:4)
尝试在WHERE子句中添加AND
条件:userID = 'email' AND flag = true
。这将只返回具有真值的用户,其中您可以通过限制条件获得前50名。
答案 1 :(得分:1)
由于您想要获取前50个值而不管IsRead条件,然后对其进行过滤,您可以尝试这个,但我在Sql Server中填充了查询。
SELECT * FROM (SELECT TOP 50 * FROM notification) S WHERE toUserId = 'email' and isread=false
这应该有所帮助。您可以在MySql中尝试相同的技术。
答案 2 :(得分:0)
SELECT * FROM notification WHERE toUserId = 'email' AND isread = 0 ORDER BY id DESC LIMIT 50;
应该可行,但它确实取决于你使用0表示false而1(或其他任何)表示true。如果您选择了tinyint或BOOL类型,那么这通常会起作用(注意tinyint可以是-9到+9,所以请确保将0或1设置为标记。
在我看来,最好使用术语1和0而不是TRUE或FALSE(尽管这实际上是美学问题)因为代码更容易转移。它还可以防止延迟编码。