为最新的两个不同的列选择值

时间:2019-02-28 16:23:10

标签: postgresql

我正在尝试执行一个SQL,该SQL将返回表中两个不同列的最新数据值。

当前,我选择不同的列值,然后,我遍历各列以获取在选择之前的不同值,然后将其排序并限制为1。这些标记可以是任何数字,可能并不总是一起发布(一个只能张贴标签1;而其他时候可以张贴1、2、3)。

尽管它给出了预期的结果,但在许多方面似乎效率低下,而且由于我没有足够的SQL经验,所以这是迄今为止我发现执行任务的唯一方法...

--------------------------------------------------
|  name   |   tag   |   timestamp  |    data     |
--------------------------------------------------
|   aa    |    1    |      566     |    4659     |
--------------------------------------------------
|   ab    |    2    |      567     |    4879     |
--------------------------------------------------
|   ac    |    3    |      568     |    1346     |
--------------------------------------------------
|   ad    |    1    |      789     |    3164     |
--------------------------------------------------
|   ae    |    2    |      789     |    1024     |
--------------------------------------------------
|   af    |    3    |      790     |    3346     |
--------------------------------------------------

因此,预期结果为{3164,1024,3346}

当前我正在做的是

"select distinct tag from table"

然后,我以编程方式存储所有不同的标记值,并使用

以编程方式遍历这些值
"select data from table where '"+ tags[i] +"' in (tag) order by timestamp desc limit 1"

谢谢

1 个答案:

答案 0 :(得分:0)

这很接近,但是请注意,如果具有相同标签的两行共享最大时间戳,则结果集中将出现重复

jdbc:mysql://<REMOTE_IP>:3306/SOME_DB_2&useSSL=true