【问题标题】:First query result to be modified and used in the second query SQL第一个查询结果要修改并在第二个查询SQL中使用
【发布时间】:2018-03-15 21:33:56
【问题描述】:

我有一个 table1 假设我从 'MYname_GKS_50' 之类的列中得到一个 o/p。我只想将该结果的 MYname 部分用作获取不同表的另一列的条件。 假设如果我从 table2.xyz 给出 columnname = MYname 。这两个查询应该在 OracleDB 中的一个 SQL 查询中。 例如:

  • 表 1 (col1 , col2)

    col2 有 数据 MYname_GKS_50,MYname_GKS_51, MYname_GKS_52 , Ora_10, Ora_11...

我只希望 col2 结果的 MYname_GKSOra 部分用于我的搜索条件,不需要更改编号。

  • 表 2(列 3、列 4)

col2 的值,即 MYname_GKSOra 现在应该与 table2 的 col3 进行比较。 如果匹配,它应该给我 table2 的 col4。

任何建议大师!

【问题讨论】:

  • 您使用的是 MS SQL Server 还是 Oracle?
  • 删除了基于 OP 询问 OracleDB 和列名 Ora_10 Ora_11 的 sql-server
  • 使用的数据库是Oracle 11g。 Ora_10,11 只是我使用的单词,就像假设 Order_detailsversionOne_100056 、 Order_detailsversionOne_100057、Order_detailsversionOne_100058 .. 不要与任何 ORA 错误混淆。

标签: sql oracle plsql oracle11g


【解决方案1】:

您可以在加入条件中使用like

on t1.col2 like t2.col3||'%'

喜欢这里:

with table1 (col1, col2) as (
    select 1, 'MYname_GKS_50' from dual union all
    select 2, 'MYname_GKS_51' from dual union all
    select 3, 'MYname_GKS_52' from dual union all
    select 4, 'Ora_10'        from dual union all
    select 5, 'Ora_11'        from dual ),
table2 (col3, col4) as (
    select 'MYname_GKS', 'XYZ' from dual union all
    select 'Ora',        'PQR' from dual )
select * 
  from table1 t1 join table2 t2 on t1.col2 like t2.col3||'%'

结果:

      COL1 COL2          COL3       COL4
---------- ------------- ---------- ----
         1 MYname_GKS_50 MYname_GKS XYZ
         2 MYname_GKS_51 MYname_GKS XYZ
         3 MYname_GKS_52 MYname_GKS XYZ
         4 Ora_10        Ora        PQR
         5 Ora_11        Ora        PQR

table2 存在包含多个匹配行的风险,例如 MYnameMYname_GKS,我不知道在这种情况下您想要什么。

【讨论】:

  • 似乎这个查询可能在条件下工作。让我试试。虽然我在每列下都有 1000 万条数据,但希望我不能做那个 select 语句。感谢您的更新。
  • 不清楚。请编辑您的原始问题,而不是编写更改要求的 cmets,在两个表中显示简化的输入数据并与这些数据匹配所需的输出。
  • 我的最终要求是 COL4 数据。假设我在 COL2 下有 100 行 myname_1,myname_2, old_1,old_2,old_3,get_4,get_5,look_2,look_99 等等。在其他 Table2 中,COL3 的数据只有 myname,old,get,look 。此列没有数字。我想将 COL3 每个数据与 COL 2 进行比较,如果它匹配,那么我应该在 TABLE2 的 sql COL4 数据中获取或选择。你给的ON条件,我需要检查。它似乎会起作用。我可以说 100 200 个不同的名称,例如 myname、old、get、look 等。所以我不能使用您的选择条件,我需要一一输入。不需要
  • with 部分仅用于模仿您的数据。你需要写的都是最后两行。
  • 是的,我有那个 Stibbons。一旦我进入网络,我会尝试。我正在解释我的整个场景。以防万一有人不明白。我会及时通知大家。感谢大家的笔记。
猜你喜欢
  • 2015-03-16
  • 2014-12-02
  • 2013-11-01
  • 2021-01-11
  • 1970-01-01
  • 2018-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多