跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 请教一下,这种 sql 怎么写
未分類
15 5 月 2020

请教一下,这种 sql 怎么写

请教一下,这种 sql 怎么写

資深大佬 : NoKey 0

数据库是 oracle

我从一个表里查处的数据类似于 1,2,3

然后,这个是另外一个数据表的 id,我想把这个结果放到 in 里面,这样查出 id 对应的数据信息。

大概就是 select * from a where id in (select ids from b)

但是我不知道怎么把结果放到 in 里

求大佬指教,谢谢。

大佬有話說 (13)

  • 資深大佬 : getui163

    你这个 1,2,3 如果是多行的,你这个写法完全 OK 啊
    或者 join 也行

    如果这个数据是单行的某列,想按逗号拆分,看下 REGEXP_SUBSTR 这个函数

  • 資深大佬 : RSDTE

    SELECT * FROM a c WHERE EXISTS( SELECT id FROM b o WHERE o.id=c.id)

    这个意思?

  • 資深大佬 : liuhuan475

    多列?用 union all

  • 資深大佬 : Johnny168

    是想把数据字段( 1,2,3 ),拆成’1′,’2′,’3′ 三个 ID 的意思吗?

  • 資深大佬 : xuanbg

    主的意思大概是 A 表的某些 id 存在 B 表的某个字段,以逗号分隔。然后根据这个字段查询 A 表的记录。

    直接 in 是不行的,要用函数处理一下,具体的做法可以百度。

  • 資深大佬 : RJH

    oracle 有个 FIND_IN_SET 函数,你可以看看是否满足你的需求

  • 資深大佬 : sh0214

    把 b 表的结果用字段存起来然后做拼接?

  • 資深大佬 : c6h6benzene

    新的 SQL SERVER 有 split_string 函数

  • 主 資深大佬 : NoKey

    @getui163 谢谢,就是一个字段,里面存的是 1,2,3

  • 主 資深大佬 : NoKey

    @Johnny168 是的,查出来是 1,2,3 想直接放到 in 里面

  • 主 資深大佬 : NoKey

    @xuanbg 谢谢,是这个意思,一个字段就是 1,2,3 这样的字符串

  • 資深大佬 : PopRain

    我猜 SQL SERVER 可以这么写
    select * from a inner join b on (b.ids like a.id+’,%’ or b.ids like ‘,’+a.id+’%’)

    id 不能又包含关系 1,11,111 不行

  • 資深大佬 : CRVV

    都用上 oracle 这么高级的数据库了,请正经地设计一下表。不要用这种奇怪的方式来储存一对多或者多对多的数据。

    一定要这么查的话,用 PostgreSQL 是这么写的
    with a(id, v) as (values (1,’a’), (2,’b’), (3,’c’)), b(id,ids) as (values (8, ‘1,3,4’), (9,’2,5,8′))
    SELECT * from b
    cross join regexp_split_to_table(ids, ‘,’) as aids(aid)
    inner join a on a.id = aids.aid::int
    where b.id = 8;

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具