gpt4 book ai didi

mysql - 从单个表中选择有条件限制的数据

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

有一个表格,其形式为:t_news

  • ID
  • 标题

每条新闻的类别不一致。也就是说,它可能是前 2 个新闻第一类别,然后是第三个,然后是第五个,等等。

Need to get to 5 news every category, sorted by date.

输出应该类似于以下内容(例如,3 条新闻,类别 3)

id title  cat
1 News1 1
2 News2 1
3 News3 1
4 News4 2
5 News5 2
6 News6 2
7 News7 3
8 News8 3
9 News9 3

最佳答案

在 MySQL 中,您可以使用变量来创建行号列:

SELECT  id, title, cat
FROM ( SELECT id,
title,
cat,
@r:=IF(@cat = cat, @r+1, 1) AS RowNum ,
@cat:= cat AS Cat2
FROM t_news,
(SELECT @cat:= 0) AS cat,
(SELECT @r:= 0) AS r
ORDER BY cat, id
) t
WHERE RowNum <= 5;

如果 cat 列与 @cat 变量(从上一行设置)相同,则键位于每一行,则行号递增 1。否则它重置为 0。增量的顺序由子查询中的 order by 子句设置(我使用了 ID,因为您发布的架构不包含日期列)。

<强> Example on SQL Fiddle

关于mysql - 从单个表中选择有条件限制的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18183903/

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