TABLE A:
ColumnA ColumnB ColumnC ColumnD
77777 89 ABC 11:33:01
77777 88 ABC 11:33:09
77776 89 ABC 10:00:01
77776 88 ABC 10:34:01
77776 87 ABC 10:35:10
77775 88 ABC 11:32:48
77775 89 ABC 11:33:09
77775 61 DEF 11:38:21
因此,我需要选择两行77777和77776,因为77775有88
值为第一,89为第二,而期望反之亦然
我有这个查询(查询允许我仅在89和88
时选择行共存,但需要检查它们出现的顺序:
select ta.COLUMNA from TABLEA ta
where ta.COLUMNB in (89,88)
group by ta.COLUMNA
having count(distint ta.COLUMNB)=2;
这将选择上表中的所有结果
答案 0 :(得分:1)
我认为你可以通过以
的形式加入自身来解决这个问题SELECT JOINTABLEA.COLUMNA FROM TABLEA JOINTABLEA
JOIN TABLEA JOINTABLEB
ON JOINTABLEB.COLUMND > JOINTABLEA.COLUMND
WHERE JOINTABLEA.COLUMNB = 89
AND JOINTABLEB.COLUMNB = 88
GROUP BY JOINTABLEA.COLUMNA
我做了一个小的SQLFiddle示例here,虽然我只使用数字而不是ColumnD的日期时间列