【问题标题】:How to select tuple from rows in oracleoracle如何从行中选择元组
【发布时间】: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 与元组一起使用?

先谢谢了

【问题讨论】:

    标签: sql oracle oracle12c


    【解决方案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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-01-13
        • 1970-01-01
        • 2023-03-23
        • 2015-10-01
        • 2017-08-02
        • 2012-02-13
        • 2011-11-24
        • 1970-01-01
        相关资源
        最近更新 更多