每个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中文网其他相关文章!