MySQL选择唯一的排序字段值

时间:2015-05-13 13:07:44

标签: mysql select distinct

我尝试从已连接两次的单个表中连接2 GROUP_CONCAT( columns )的值,然后从列表中获取唯一项。

我可以在查询之外完成所有这些操作但是如果可能的话,只需通过JOIN和一些花哨的字符串操作从数据库中提取数据就不错了。

简单地说,我想通过选择 1,2,3 1,3,4 1,2,3,4 >。 1,2,3 adn 1,3,4 是两次连接表上GROUP_CONCAT的结果。我可以做到这一点:

SELECT CONCAT_WS(
    ",",
    "1,2,3", 
    "1,3,4"
)

哪些输出 1,2,3,1,3,4

我希望能够做到这样的事情:

-- NOTE TO SKIM READERS: THIS QUERY WILL NOT WORK
SELECT 
    SORT_LIST( 
        DISTINCT
        CONCAT_WS(
            ",",
            "1,2,3", 
            "1,3,4"
        )
    )
-- NOTE TO SKIM READERS: THIS QUERY WILL NOT WORK

但我在MySQL中找不到类似的东西。

1,2,3 1,3,4 已经生成GROUP_CONCAT( DISTINCT col )

1 个答案:

答案 0 :(得分:1)

正如我在评论中所述,我找到了一种使用子查询实现不同串联字符串列表的方法:

DROP TABLE IF EXISTS `test1234`;
CREATE TABLE `test1234` (
    `val` int(1),
    `type` varchar(1)
);

INSERT INTO `test1234` VALUES
( 1, 'a' ),
( 2, 'a' ),
( 3, 'a' ),
( 1, 'b' ),
( 3, 'b' ),
( 4, 'b' );

SELECT GROUP_CONCAT( `val` ) AS `vals`
FROM (
        (
                SELECT `val` FROM `test1234` WHERE `type` = 'a'
        ) UNION DISTINCT (
                SELECT `val` FROM `test1234` WHERE `type` = 'b'
        )
) AS `test`;
DROP TABLE IF EXISTS `test1234`;

此选择 1,2,3,4