-1

如何修改此查询?

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
4

1 回答 1

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示例

于 2012-07-09T10:11:31.547 回答