oracle如何从行中选择元组
Posted
技术标签:
【中文标题】oracle如何从行中选择元组【英文标题】:How to select tuple from rows in oracle 【发布时间】:2020-07-21 10:42:37 【问题描述】:我的临时表具有以下值:
╔═══════════╤═══════════╗
║ LATITUDE │ LONGITUDE ║
╠═══════════╪═══════════╣
║ 69.122112 │ 39.122112 ║
╟───────────┼───────────╢
║ 69.123450 │ 39.123450 ║
╚═══════════╧═══════════╝
我想做这样的事情
with temp as (select LATITUDE,LONGITUDE from SOME_TABLE_B)
select * from temp
union
select LATITUDE,LONGITUDE from SOME_TABLE where (LATITUDE, LONGITUDE) in (select (LATITUDE, LONGITUDE) from temp)
以便选择具有相似经纬度对的所有其他数据。但我得到以下结果:
ORA-00920 无效的关系运算符
如何从表中选择元组,以将 IN CLAUSE 与元组一起使用?
先谢谢了
【问题讨论】:
【参考方案1】:我认为问题在于子查询中的附加括号。试试这个:
select LATITUDE,LONGITUDE
from SOME_TABLE
where (LATITUDE, LONGITUDE) in (select LATITUDE, LONGITUDE from temp)
【讨论】:
您是对的,括号中的内容破坏了查询。谢谢【参考方案2】:不完全确定您的要求。如果要检查临时表中的数据可用性,可以使用以下查询,
select LATITUDE,LONGITUDE from SOME_TABLE where (LATITUDE, LONGITUDE) in (select
LATITUDE, LONGITUDE from temp)
如果你想检查可用性以及合并来自 temp 的数据,你可以使用下面,
select LATITUDE,LONGITUDE from SOME_TABLE where (LATITUDE, LONGITUDE) in (select
LATITUDE, LONGITUDE from temp)
UNION
select
LATITUDE, LONGITUDE from temp
【讨论】:
【参考方案3】:在您的情况下,您也可以尝试使用带有子查询的连接:
select LATITUDE,LONGITUDE
from SOME_TABLE s
INNER JOIN (
select LATITUDE, LONGITUDE
from temp
) t on t.LATITUDE = s.LATITUDE
AND t.LONGITUDE = s.LONGITUDE
【讨论】:
以上是关于oracle如何从行中选择元组的主要内容,如果未能解决你的问题,请参考以下文章