我看到很多类似的问题,有些我找不到答案。这是交易。我有两张 table 。我正在尝试找到一种方法来将文本数组激发到子句中。
table.list table.user
+--------+ +--------+
|id|list | |id|name |
+--+-----+ +--+-----+
| 1|1,2,3| | 1|jack |
+--+-----+ +--+-----+
| 2|6,8 | | 2|john |
+--+-----+ +--+-----+
| 3|jane |
+--+-----+
| 6|jim |
+--+-----+
| 8|jade |
+--+-----+
这是我可爱的子句代码。
SELECT (SELECT GROUP_CONCAT(user.name)
FROM user WHERE user.id in (list.list)
)
FROM list;
我的问题是有什么方法可以将 list.list 转换为数组。我知道区别。通常它应该像 (1,2,3) 或 ('1','2','3') 但现在我有 ('1,2,3')。任何想法。
最佳答案
MySQL 5.5.32 架构设置:
CREATE TABLE list
(`id` int, `list` varchar(5))
;
INSERT INTO list
(`id`, `list`)
VALUES
(1, '1,2,3'),
(2, '6,8')
;
CREATE TABLE user
(`id` int, `name` varchar(4))
;
INSERT INTO user
(`id`, `name`)
VALUES
(1, 'jack'),
(2, 'john'),
(3, 'jane'),
(6, 'jim'),
(8, 'jade')
;
查询 1:
SELECT (SELECT GROUP_CONCAT(user.name)
FROM user WHERE instr(concat(' ,',list.list,','),concat(',',user.id,',')) > 1
)
FROM list
Results :
jack,john,jane
jim,jade
关于MySQL in 子句字符串到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21199310/