gpt4 book ai didi

mysql - 仅当项目按升序排列时,如何选择(SQL)项目?

转载 作者:行者123 更新时间:2023-11-29 07:40:29 27 4
gpt4 key购买 nike

我有一个 SQL 表格,如下所示:

--------------------------
|ID | number| numberDate |
|---|-------|-------------
| 1 | 120 | 2011-01-22 |
|---|-------|------------|
| 1 | 124 | 2011-01-27 |
|---|-------|------------|
| 2 | 136 | 2011-01-20 |
|---|-------|------------|
| 2 | 135 | 2011-01-30 |
|---|-------|------------|
| 3 | 150 | 2011-01-15 |
|---|-------|------------|
| 3 | 155 | 2011-01-19 |
|---|-------|------------|
| 3 | 180 | 2011-01-23 |
--------------------------

我想选择数量不断增加的 ID。在上面的示例中,我将选择 ID 1 和 ID 3,因为:对于 ID 1,我们有 120<124,对于 ID 3,我们有 150<155<180。

输出应该是:

-----
|ID |
|---|
| 1 |
|---|
| 3 |
-----

我无法弄清楚。

谢谢。

编辑:我添加了第三列并放置了一些示例输出。

最佳答案

我们将分两步完成此操作。

--Step 1: Find records the violate the rule
With BadIDs AS (
--IDs where there is another record with a matching ID and lower number, but greater date
select t1.id
from [table] t1
inner join [table] t2 on t2.id = t1.id
where t1.number > t2.number and t1.numberDate < t2.numberDate
)
-- Step 2: All IDs not part of the first step:
select distinct ID from [table] WHERE ID NOT IN (select ID from BadIDs)

不幸的是,MySql 不支持 CTE(公用表表达式)。这是一个适用于 MySql 的版本:

select distinct ID 
from [table]
WHERE ID NOT IN
(
select t1.id
from [table] t1
inner join [table] t2 on t2.id = t1.id
where t1.number > t2.number and t1.numberDate < t2.numberDate
)

关于mysql - 仅当项目按升序排列时,如何选择(SQL)项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29240487/

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