如何将表中的每一行与所有行进行比较?

Posted

技术标签:

【中文标题】如何将表中的每一行与所有行进行比较?【英文标题】:How to compare each row from table with all rows? 【发布时间】:2013-06-12 11:22:06 【问题描述】:

我正在使用 mysql

将每一行与该表中的所有左侧行进行比较,然后选择 ID 和时间戳,其中 HEADING 介于 -15

myTable
id
heading (In degrees)
timestamp (in seconds)

例如。第一个表行数:

1 - 50 - 133324565
2 - 12 - 133324565
3 - 10 - 133324565
5 - 220 - 133324565
6 - 35 - 133324565
10 - 10 - 133324565
11 - 15 - 133324565
12 - 22 - 133324565
16 - 168 - 133324565

如您所见,ID 不是连续的,所以我不能这样做吗?

SELECT T1.id,T1.heading,T2.id,T2.heading
FROM mytable as T1, mytable as T2
WHERE T1.id > T2.id -1
AND (T1.timestamp > T2.timestamp -10 OR T1.timestamp < T2.timestamp +10)
AND (T1.heading > T2.heading -15 OR T1.heading < T2.heading +15)

【问题讨论】:

【参考方案1】:
SELECT T1.id,T1.heading,T2.id,T2.heading
FROM mytable as T1, mytable as T2
WHERE T1.id > T2.id AND NOT EXISTS (SELECT T3.id FROM mytable as T3 WHERE T3.id<T1.id AND T3.id>T2.id)
AND (T1.timestamp > T2.timestamp -10 OR T1.timestamp < T2.timestamp +10)
AND (T1.heading > T2.heading -15 OR T1.heading < T2.heading +15)

【讨论】:

以上是关于如何将表中的每一行与所有行进行比较?的主要内容,如果未能解决你的问题,请参考以下文章

java按行读取txt文件并与数据库表中的内容进行匹配处理(问题好像比较复杂哈)

将表中的所有行与其他表中的第一个匹配行连接起来[重复]

如何将表中的所有td对齐在同一行中

将表中的日期与 TableAU 中的多个日期范围进行比较:构建 WHERE 语句

是否可以在单个查询中选择表 1 中的所有行和表 2 中的每一行元数据?

Kusto:将结果集中的每一行与另一个表进行比较