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如何从行中选择元组的主要内容,如果未能解决你的问题,请参考以下文章

根据同一行中的另一个值从行中选择某个值

如何从行中获取/打印值[重复]

从行中减去一个数字,直到数字结束为零

python如何从行中提取符合的信息,正则表达式

如果满足某些条件,则从行中获取信息

从行中删除表格附件指示器