【问题标题】:Fetching data from database and Filter Results从数据库中获取数据并过滤结果
【发布时间】:2014-02-11 08:00:59
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    尝试在 WHERE 子句中添加 AND 条件:userID = 'email' AND flag = true。这只会返回具有真实值的用户,您可以通过限制条件获得前 50 名。

    【讨论】:

    • 你没有问题老兄。
    • 呵呵,没错,再读一遍,我想这次我明白了。这也很简单,我们需要一个子查询。所以它就像 select * from notification where your_primary_key IN (select your_primary_key FROM notification WHERE flag = true ORDER BY id DESC LIMIT 50);
    • 等一下,这将一直返回50条记录。我会尽快修改它。但是,您能否尝试检查一下这是否有效?
    • 这里选择 * from (Select * from notification where toUserId = 'email' ORDER BY id Desc LIMIT 50)sum where isread=false;
    • select * from MyTable where city in(从 MyTable 中选择 TOP 50 城市,其中 IsCityClean = 'Yes' order by CITY)和 CITY = 'Mumbai'。这是我们如何实现类似目标的另一种方法。 :)
    【解决方案2】:

    由于您想获取前 50 个值而不考虑 IsRead 条件,然后对其进行过滤,您可以尝试这样做,但我在 Sql Server 中填充了查询。

    SELECT * FROM (SELECT TOP 50 * FROM notification) S WHERE toUserId = 'email' and isread=false
    

    这应该会有所帮助。您可以在 MySql 中尝试相同的技术。

    【讨论】:

    • 是的,我需要前 50 名,但我需要尝试一次,让我再试一次
    • 如果有帮助,您可以将其作为答案。
    • 不,它仍然不正确,我可以为您的 ans 投票 +1,但它不是所需的 ans,我在评论中有更新 ans。 :)
    【解决方案3】:
    SELECT * FROM notification WHERE toUserId = 'email' AND isread = 0 ORDER BY id DESC LIMIT 50;
    

    应该可以工作,尽管它确实取决于您使用 0 表示假,使用 1(或其他任何东西)表示真。如果您选择了 tinyint 或 BOOL 类型,那么这通常会起作用(注意 tinyint 可以是 -9 到 +9,因此请确保将 0 或 1 设置为标志。

    在我看来,使用术语 1 和 0 可能比使用 TRUE 或 FALSE 更好(尽管这实际上是一个美学问题),因为这样代码更容易转移。它还可以防止懒惰的编码。

    【讨论】:

    • 不,你没有得到问题,伙计。它给予前 50 名前 50 名,但我不希望前 50 名可能是任何记录,并且从前 50 名中,我需要具有 isread==false 的 ans。
    • 试试这个代码——它应该给你你想要的,而且尝试它不会对你造成伤害。如果你不喜欢我的审美,要么在我放 0 的地方使用 FALSE,要么用你用来表示 false 的任何东西替换。也许您可能会改写问题,提供表模式甚至一些示例数据?也许是一个 sqlfiddle?
    • 是的,兄弟我已经尝试过了,但我需要最后 50 条记录,这些记录要求电子邮件 ID。但是您的查询提供了我不想要的所有记录。 bcoz 我需要前 50 条记录,因为它是真的假的没关系,但在那之后我需要过滤掉 50 条记录而不是来自整个表的表格。你明白了吗??
    猜你喜欢
    • 2013-04-10
    • 2015-11-09
    • 2021-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多