gpt4 book ai didi

mysql - 如何获取 where 子句中每个名称的最新值?

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

如何仅获取每个名称的最新值。

SQL="SELECT name,Myvalue,theDate from Mytable where name in ('name1','name2','name3')";

因此该案例的结果将只有 3 条记录。主要 key :AutoInc.theDate:值的日期。

最佳答案

您使用变量创建 row_number在mysql中。

因为数据是有序的by DATE DESC将行带入 rownum = 1将返回每个名称的最新的

<强> SQL FIDDLE DEMO

测试数据

INSERT INTO ForgeRock
(`name`, `Myvalue`, `theDate`)
VALUES
('name1', 1, '2016/01/10'),
('name1', 7, '2016/01/11'),
('name1', 6, '2016/01/12'), <-- latest
('name2', 2, '2016/01/03'), <-- latest
('name2', 5, '2016/01/02'),
('name2', 3, '2016/01/01'),
('name3', 30, '2016/01/05'),
('name3', 12, '2016/01/06'),
('name3', 33, '2016/01/07') <-- latest
;

查询

SELECT name,
Myvalue,
theDate
FROM
(
SELECT name,
Myvalue,
theDate,
(@rownum := if(@name = name,
@rownum + 1, -- increase rownum
if (@name := name, -- reset counter
1,
1)
)
) rownum
FROM ForgeRock
CROSS JOIN (select @rownum := 1, @name := '') params -- initialize the variables
WHERE name in ('name1','name2','name3')
ORDER BY name, theDate desc
) T
WHERE rownum = 1
ORDER BY name

输出

|  name | Myvalue |                   theDate |
|-------|---------|---------------------------|
| name1 | 6 | January, 12 2016 00:00:00 |
| name2 | 2 | January, 03 2016 00:00:00 |
| name3 | 33 | January, 07 2016 00:00:00 |

关于mysql - 如何获取 where 子句中每个名称的最新值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34748185/

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