gpt4 book ai didi

php - SQL-如何通过增加计数循环来选择订单

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

我想使用 SQL order by raise count 循环来选择数据。

如果没有例子,这很难解释。

下面有一个表格数据:

SELECT * FROM data_table ORDER BY point desc

-------------------
| point | data | cat |
===================
| 9 | a | 5 |
| 8 | b | 5 |
| 7 | c | 4 |
| 6 | d | 1 |
| 5 | e | 2 |
| 4 | f | 1 |
| 3 | g | 3 |
| 2 | h | 2 |
| 1 | i | 3 |

SELECT ~~ ORDER BY 增加 'cat' 循环。

预期结果:

-------------------
| point | data | cat |
===================
| 6 | d | 1 | -> There are two '1', but this one have bigger point value.(6>4)
| 5 | e | 2 | -> There are two '2', but this one have bigger point value.(5>2)
| 3 | g | 3 |
| 7 | c | 4 |
| 9 | a | 5 |
| 4 | f | 1 |
| 2 | h | 2 |
| 1 | i | 3 |
-> Skip cat '4' because there are no '4' cat value more.
| 8 | b | 5 |

我在 php 中使用 sql。

如果没有办法得到这个,我想我必须找到或编写php代码。

请帮助我尽可能轻松地查询此问题。

谢谢。

就我而言,id 不是实际的“id”,只是一个 INT 字段。 -> 固定为“点”

意思是“可以重复并且具有大的整数值”。

最佳答案

MYSQL 中不存在 ROW_NUMBER 函数。但这应该会给你想要的结果。 SQLFiddle

SELECT t.point, t.data, t.cat
FROM data_table t
ORDER BY
FIND_IN_SET(t.point, (
SELECT GROUP_CONCAT(point ORDER BY point DESC, cat ASC)
FROM data_table t1
where t1.cat = t.cat)),
cat

以防万一(SQL Server):

SELECT *
FROM data_table t
ORDER BY ROW_NUMBER() OVER(PARTITION BY t.cat ORDER BY t.id DESC), t.cat

关于php - SQL-如何通过增加计数循环来选择订单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36696434/

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