MySQL Select 个唯一的排序字段值
MySQL Select unique sorted field values
我试图将 2 GROUP_CONCAT( columns )
的值从已连接两次的单个 table 连接起来,然后从列表中获取唯一项。
我可以在查询之外执行所有这些操作,但如果可能的话,最好使用 JOIN 和一些花哨的字符串操作从数据库中提取数据。
简单地说,我想通过选择 1,2,3 和 [=33] 产生 1,2,3,4 =]1,3,4。 1,2,3 和 1,3,4 是 GROUP_CONCAT 在两次连接 [=49= 上的结果].我能做到这一点:
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[=生成了16=]
正如我在评论中所述,我找到了一种使用子查询实现不同串联字符串列表的方法:
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
我试图将 2 GROUP_CONCAT( columns )
的值从已连接两次的单个 table 连接起来,然后从列表中获取唯一项。
我可以在查询之外执行所有这些操作,但如果可能的话,最好使用 JOIN 和一些花哨的字符串操作从数据库中提取数据。
简单地说,我想通过选择 1,2,3 和 [=33] 产生 1,2,3,4 =]1,3,4。 1,2,3 和 1,3,4 是 GROUP_CONCAT 在两次连接 [=49= 上的结果].我能做到这一点:
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[=生成了16=]
正如我在评论中所述,我找到了一种使用子查询实现不同串联字符串列表的方法:
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