如何修改此查询?
SELECT column_a,
( SELECT GROUP_CONCAT(column_b)
FROM table_b
WHERE column_b IN (main_tbl.column_a) ) AS alias_a
FROM table_a main_tbl
假设column_a的值为1,2,3。
上述查询的输出类似于:
SELECT column_a,
( SELECT GROUP_CONCAT(column_b)
FROM table_b
WHERE column_b IN ('1,2,3') ) AS alias_a
FROM table_a main_tbl
我需要的是:
SELECT column_a,
( SELECT GROUP_CONCAT(column_b)
FROM table_b
WHERE column_b IN (1,2,3) ) AS alias_a
FROM table_a main_tbl
答案 0 :(得分:3)
首先,您应该强烈考虑修改表结构。我无法看到任何理由将整数列表存储为关系数据库中的字符串,它会破坏关系数据库的重点。
但是,您可以使用LIKE
来解决这个问题。
SELECT column_a,
( SELECT GROUP_CONCAT(column_b)
FROM table_b
WHERE CONCAT(',', main_tbl.column_a, ',') LIKE CONCAT('%,', column_b, ',%') ) AS alias_a
FROM table_a main_tbl
不理想,但它有效。 SQL Fiddle
上的示例