2013-06-03 121 views
1

我有一个包含两列的表。选择1条记录,其中两条记录在不同列中具有相同的值

Table snap

的前两行的列值是反转的,我将如何选择适合每一个地方一个STATION_1_I等于另一个记录STATION_2_I及其STATION_2_I等于STATION_1_I例如一个记录

+0

[RDBMS](http://en.wikipedia.org/wiki/Relational_database_management_system)您使用的是什么? 'RDBMS'代表*关系数据库管理系统*。 'RDBMS是SQL'的基础,并且适用于所有现代数据库系统,如MS SQL Server,IBM DB2,Oracle,MySQL等等...... –

+0

我正在使用oracle – jfin3204

回答

3

INTERSECT将删除重复你

select "station_1_I", "station_2_I" from mytable 
intersect 
select "station_2_I", "station_1_I" from mytable 
      where "station_2_I" < "station_1_I" 

SQL Fiddle

+0

+1吸烟古巴雪茄 – Kermit

+0

没有工作得到仍然获得这两个记录。 – jfin3204

+0

这不会起作用,假设你有这样一组记录1,2和2,1,这个相交如何在'2,1'和'1,2'上工作? http://www.sqlfiddle.com/#!4/171dc/1 – SkyDrive

2
select a,b from 
(
select 
(case when a<b then a else b end) as a, 
(case when a>b then a else b end) as b 
from (
select station_1_I as a, station_2_I as b from MyTable 
union all 
select station_2_I, station_1_I from MyTable 
) having count(*)=2 group by a,b 
) group by a,b 
+0

没有工作。仍然获得两个记录。 – jfin3204

+0

啊,你不需要两个重复?好的,现在我明白了。将根据此编辑答案。 –

+0

顺便说一句,我试图使它在那些RDBMS上工作,但不支持'intersect' –

相关问题