从数据库和过滤结果中获取数据

时间:2014-02-11 08:01:00

标签: mysql sql database database-design database-schema

我使用此查询获得前50条记录。但是,同一个表中有一个名为read的标记,我只想返回前{50}个不是read的记录(即isread=false)。我怎样才能做到这一点?有人可以给我所需查询的想法吗?我尝试过使用子查询。

SELECT * FROM notification WHERE toUserId = 'email' ORDER BY id DESC LIMIT 50;

3 个答案:

答案 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(尽管这实际上是美学问题)因为代码更容易转移。它还可以防止延迟编码。