mySQL SELECT IN来自string

Ale*_*art 3 mysql

这是我的表X:

id      vals
---------------------
1       4|6|8|
Run Code Online (Sandbox Code Playgroud)

现在表Y:

id      name
--------------------
1        a
4        b
6        c
8        d
Run Code Online (Sandbox Code Playgroud)

现在我想要以下内容:

select * from Y where id IN (replace(select vals from X where id = '1'),'|',',')
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用.有什么想法吗?

YOU*_*YOU 6

您可以使用FIND_IN_SET而不仅仅是IN,普通IN关键字无法在一个字段内的逗号分隔值之间进行搜索.

例如

mysql> select FIND_IN_SET(4, replace('4|6|8|','|',','));

+-------------------------------------------+
| FIND_IN_SET(4, replace('4|6|8|','|',',')) |
+-------------------------------------------+
|                                         1 |
+-------------------------------------------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)