gpt4 book ai didi

mysql - 如何在 mysql 查询中选择每个类别的记录?

转载 作者:行者123 更新时间:2023-11-29 02:32:39 25 4
gpt4 key购买 nike

在文章列表中

title varchar(255),
category int(11),
processed enum('yes', 'no'),
... other columns

,我想处理行(SELECT 一行,然后 UPDATE)。但是,我需要对所有类别进行不同的处理。不随机处理,例如一个类别的所有记录,但另一个类别没有。

  1. 基本情况:为每个类别处理 x 行。

  2. 高级案例:为每个类别(在其表中)定义每日限制。这将类似于抓取工具,因为我们定义了在给定时间段内应为域抓取多少页面。

示例:

SELECT * from articles WHERE process='no' LIMIT 1
edit the columns in PHP
UPDATE articles .... WHERE id=xx (id comes from SELECT).

表:

id    title    category  process
1 title1 3 no
2 title2 3 no
3 title3 3 no
4 title4 3 no
5 title5 5 no
6 title6 5 no
7 title7 5 no

如果我通过 cron 定期运行查询,它将处理类别 3 中的所有文章,然后是类别 5。我希望查询处理类别 3 中的一篇文章,然后是类别 5 中的一篇文章,依此类推。我想逐步处理所有类别。

最佳答案

SELECT *
FROM Table
WHERE category =
(SELECT category
FROM Table
WHERE process = 'no'
GROUP BY category
ORDER BY COUNT(category) DESC
LIMIT 1)
ORDER BY id
LIMIT 1

.. 将为您提供具有最小 id 的行,该行属于尚未处理的行数最多的类别。子查询返回具有最多 process='no' 行的类别。

如果你的 5 比 3 多很多,这将一直给你 5 直到 3 多于 5 然后它会开始与每个查询交替(只要你每次都将行标记为 process = 'yes' ).

关于mysql - 如何在 mysql 查询中选择每个类别的记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10639725/

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