MySQL in 子句字符串到数组

标签 mysql sql arrays where-clause

我看到很多类似的问题,有些我找不到答案。这是交易。我有两张 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')。任何想法。

最佳答案

SQL Fiddle

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/

相关文章:

mysql - 统计多个表的行会造成较大的延迟

python - 即使表是空的,mySQL 也会提示重复的键

java - 无法第二次执行表更改事件

java - 数组作为参数

php - 评论区不发表评论

javascript - 在 angularjs 中处理 json 响应(来自 PHP 和 mysql)

php - Jquery 自动完成功能不更新选择的输入值

c# - BackgroundWorker 在 foreach 循环期间从 DAL 返回值

c# - C++ 和 C# 中的混合数组

python - Numpy:从 3D 数组中减去 Numpy argmin