首页 >数据库 >mysql教程 >如何查找 SQL 表中每个 ID 的最大信号值?

如何查找 SQL 表中每个 ID 的最大信号值?

Linda Hamilton
Linda Hamilton原创
2025-01-06 12:39:41461浏览

How to Find the Maximum Signal Value for Each ID in a SQL Table?

每个ID的最大信号查询

问题:

给定一个包含多个信号的表值与每个 ID 关联,如何编写查询来检索每个唯一 ID 的最大信号值?考虑以下示例表:

ID     Signal    Station    OwnerID
111     -120      Home       1
111     -130      Car        1
111     -135      Work       2
222     -98       Home       2
222     -95       Work       1
222     -103      Work       2

答案:

要检索每个 ID 的最大信号值而不影响其他列(如 Station 和 OwnerID),一个自可以使用 join:

select cur.id, cur.signal, cur.station, cur.ownerid
from yourtable cur
where not exists (
    select * 
    from yourtable high 
    where high.id = cur.id 
    and high.signal > cur.signal
)

此查询将表与其自身连接以创建笛卡尔积。对于每一对行,它检查第二行(高)的信号值是否大于第一行(cur)的信号值。如果同一 ID 找到更高的信号值,则排除当前行。

结果是一个表格,仅包含每个 ID 具有最大信号值的行。对于示例表,输出将为:

ID    Signal    Station    OwnerID
111   -120      Home        1
222   -95       Work        1

以上是如何查找 SQL 表中每个 ID 的最大信号值?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn