C# 检索list-MySQL中每个Id的最新时间戳

C# 检索list-MySQL中每个Id的最新时间戳,c#,mysql,C#,Mysql,我正在运行一个命令来检索今天ID匹配1、2、3等的所有行 不过,我想检索今天这些ID的最新条目 因此,我们没有得到: BinID |时间戳| 2021年4月29日下午3:49 2021年4月29日下午4:41 2021年4月29日下午2:24 我想: BinID |时间戳| 2021年4月29日下午4:41 2021年4月29日下午2:24 这可能吗 这是我目前正在运行的命令 MySqlCommand mysqlcom = new MySqlCommand("SELECT * FROM

我正在运行一个命令来检索今天ID匹配1、2、3等的所有行

不过,我想检索今天这些ID的最新条目

因此,我们没有得到:

BinID |时间戳|

2021年4月29日下午3:49

2021年4月29日下午4:41

2021年4月29日下午2:24

我想:

BinID |时间戳|

2021年4月29日下午4:41

2021年4月29日下午2:24

这可能吗

这是我目前正在运行的命令

MySqlCommand mysqlcom = new MySqlCommand("SELECT * FROM realtime_gpses WHERE BinId IN (" + binIdsCSVString + ") AND Timestamp >= CURDATE() AND Timestamp < CURDATE() + INTERVAL 1 DAY", mysqlcon);
MySqlCommand mysqlcom=new MySqlCommand(“从实时_gpses中选择*,其中BinId在(“+binIdsCSVString+”)中),时间戳>=CURDATE()和时间戳
在这种情况下,
binIdsCSVString
仅为2,3。

您可以试试这个

Select binid, max(timestamp) from table where ... Group by binid
作为(1,2…)中
的替代方法,您可以生成:

where (binid = @binid1 or binid=@binid2.....)
然后相应地添加参数。所有这些都可以动态生成,但它是参数化的

请参阅以获取具有最大值的行


甚至可能更好:

使用参数化查询以提高性能和安全性。我是,我省略了代码的这一部分,因为这不是解决问题的必要条件。除非你是指
时间戳
,否则是的,我应该这样做,你现在得到的代码将有三行不同的行。是的,但是我只需要2行,即ID 2的最新行和ID 3的最新行。谢谢,这是可行的:)嘿,塔里克,我刚刚意识到,我还有一个经度和纬度列,sql命令不会返回该行的正确经度和纬度以及max(timestamp)。我需要如何更改上面的命令才能获得与max timestamp匹配的经度和纬度条目?谢谢:)@juugh在这种情况下,你使用的MySql的确切版本真的很重要。MySql的最新版本最终可以使用窗口功能来解决这类问题,因为多年来MySql在这方面落后于其他数据库。但是很多人仍然在使用5.7,它没有窗口功能