2013-06-03 172 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' –

相關問題