【问题标题】:Using a string of a SELECT query to put in on a IN () condition [duplicate]使用 SELECT 查询的字符串输入 IN () 条件 [重复]
【发布时间】:2017-11-21 13:11:02
【问题描述】:

如何使用从SELECT 获取的字符串输入作为1,2,3,4 来满足IN 条件?

我的意思是,有这个输出:

SELECT id_list
FROM ids
where categories = 4;

id_list 是一个类似1,2,3,4 的字符串。

现在我想使用该字符串放入IN ()

SELECT category_name
FROM categories
WHERE categories IN (
    SELECT id_list
    FROM ids
    where categories = 4
)

但这只会输出字符串第一个值的结果,在本例中为1

我知道这不是最好的实现,但我不是设计数据库的人,我需要以这种方式进行查询。这只是一个简化的例子。

谁能告诉我如何实现我的目标?提前致谢!

【问题讨论】:

  • 您能否提供一些关于 category_name 的结构以及您希望得到什么结果的信息?
  • 闻起来像是将关系存储为逗号分隔值的糟糕设计?
  • 我认为你需要标准化你的数据库。
  • 我知道这不是最好的实现,但我不是设计数据库的人,我需要以这种方式进行查询。这只是一个简化的例子。

标签: mysql


【解决方案1】:

您可以使用FIND_IN_SET

查询

SELECT `category_name`
FROM `categories`
WHERE FIND_IN_SET(`id`, (SELECT `id_list` FROM `ids` WHERE `categories` = 4)) > 0;

Find a fiddle demo here

【讨论】:

  • 谢谢你的魔法:)
猜你喜欢
  • 2013-03-27
  • 1970-01-01
  • 2016-02-25
  • 1970-01-01
  • 1970-01-01
  • 2021-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多