gpt4 book ai didi

mysql - SQL查询选择语句

转载 作者:行者123 更新时间:2023-11-30 00:17:15 24 4
gpt4 key购买 nike

请参阅 fiddle :

<强> http://sqlfiddle.com/#!2/de208/1

到目前为止,我有以下 SQL 语句,我认为它工作正常,但现在我发现了一个问题案例。

 SELECT Count(id) FROM data WHERE user = 2 AND seen = 0
AND date > (SELECT coalesce(MAX(date),0) FROM data WHERE user = 2 AND seen <> 0);

A部分)在上面的 fiddle 中,这效果很好,它产生了 2 的计数 - 最看不见的帖子。问题是,最近的看不见的帖子在被看见之前就被删除了,所以它也将保持看不见的状态。所以下次有数据的时候,再执行这个查询,就会再次统计。只应计算一次。

B 部分)因此,当执行下一个 fiddle(添加了几行新行)时,结果是 3 个未见过的帖子的计数,而实际上它应该是 2 个。 http://sqlfiddle.com/#!2/1e750b/1

我认为仅当最近未见的帖子(如 A 部分 fiddle 中的记录 677 中的帖子)被删除时才会出现该问题。因此,如果删除的帖子是最近未见的帖子,并且不在未见的未删除帖子之前(如 B 部分 fiddle 中的记录 677 所示),则最好仅将已删除的帖子纳入计数。

我希望这是有道理的。

最佳答案

是的,你的逻辑

only included deleted posts in the count, if they are the most recent unseen post(s)

可以完美地工作。我修改了原始查询并添加了一个附加条件来执行此检查,如下所示。

SELECT Count(id) 
FROM data
WHERE user = 2
AND seen = 0
AND date > (SELECT coalesce(MAX(date),0) FROM data WHERE user = 2 AND seen <> 0)
AND (deleted = 0
OR (date = (SELECT coalesce(MAX(date),0) FROM data WHERE user = 2 AND seen = 0)));

因此,删除必须为 0,或者如果为 1(已删除),则其日期值必须等于未查看帖子的最新数据。

SQL Fiddle

关于mysql - SQL查询选择语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23555294/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com