【问题标题】:sql oracle - distinct all columnssql oracle - 区分所有列
【发布时间】:2021-05-05 00:49:45
【问题描述】:

我有以下 2 个表格。我想获取 fk_class 的第一个字符包含在数字数组中的所有模块。

ESP_MODULE

moduleId  label
AJ-03     xxxx
PTM-01    yyyy
AN-10     wwww

ESP_MODULE_CLASS

assignId  fk_class fk_module
1           1EM1     AJ-03
2           1EM2     AJ-03
3           2A1      AN-10
4           2A2      AN-10
5           5GC1     AN-10
6           5GC1     PTM-01
7           5GC3     PTM-01

我尝试使用以下查询,但我得到一个重复的值。

查询

select * from ESP_MODULE m inner join ESP_MODULE_CLASS mc ON mc.fk_module = m.moduleId WHERE SUBSTR(mc.fk_class,1,1) IN (1,2);

【问题讨论】:

  • Oracle SELECT 查询不支持数组,所以你的问题没有意义。还请显示您想要的结果集。

标签: sql oracle jpa spring-data-jpa spring-data


【解决方案1】:

你只想要exists吗?

select m.*
from ESP_MODULE m 
where exists (select 1
              from ESP_MODULE_CLASS mc 
              where mc.fk_module = m.moduleId and
                    SUBSTR(mc.fk_class, 1, 1) IN ('1', '2')
             );

注意substr() 返回一个字符串,所以正确的比较是字符串。你可能会发现这个条件更容易写成正则表达式:

where regexp_like(mc.fk_class, '^[12]')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-22
    • 1970-01-01
    • 2018-09-16
    • 1970-01-01
    • 1970-01-01
    • 2015-12-14
    相关资源
    最近更新 更多