作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在文章列表中
title varchar(255),
category int(11),
processed enum('yes', 'no'),
... other columns
,我想处理行(SELECT
一行,然后 UPDATE
)。但是,我需要对所有类别进行不同的处理。不随机处理,例如一个类别的所有记录,但另一个类别没有。
基本情况:为每个类别处理 x 行。
高级案例:为每个类别(在其表中)定义每日限制。这将类似于抓取工具,因为我们定义了在给定时间段内应为域抓取多少页面。
示例:
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/
我是一名优秀的程序员,十分优秀!