【问题标题】:How to pass comma separated value in mysql query?如何在mysql查询中传递逗号分隔值?
【发布时间】:2017-11-21 12:01:00
【问题描述】:

我正在使用子查询来获取所有 qcode,并将其作为参数传递给 mysql 中的另一个查询。但是内部查询返回的值类似于 -

SELECT qcodes FROM boardmst WHERE id=10

10002','10028','10031','10202','10226

那么如何解析它以通过 IN 子句传入另一个查询?

SELECT * FROM users WHERE qcodes IN (SELECT qcodes FROM boardmst WHERE id=10)

【问题讨论】:

  • 您的查询看起来不错。你有问题吗?
  • “但是内部查询返回的值类似于 -”是什么意思
  • 返回值是单引号 10002','10028','10031','10202','10226。但单引号在第一个和最后一个位置不可用。它将整体视为一个字符串,如 "10002','10028','10031','10202','10226"
  • qcodes 的数据类型是什么?还要为boardmst 表添加插入查询。

标签: mysql sql subquery in-subquery denormalized


【解决方案1】:

除了外部缺少的引号(也许这不是内部问​​题产生的确切答案),这正是 MySQL 期望的 IN 子句的内容。您只需确保 qcodes 列的定义在 usersboardmst 表之间是相同的。

【讨论】:

  • 两者都有 varchar 数据类型
【解决方案2】:

如果您只有五个以逗号分隔的值,那么下面的查询可以派上用场:

SELECT * FROM users WHERE qcodes IN (
select regexp_substr(replace(qcodes,''',''',','),'[^, ]+',1,level)
from boardmst where id = 10 connect by level <= 5)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多