MySQL SELECT DISTINCT 多列

新手上路,请多包涵

假设我在 MySQL 数据库的表中有列 a, b c, d 。我想要做的是在我的表中选择所有这 4 列的不同值(只有不同的值)。我尝试过类似的东西:

 SELECT DISTINCT a,b,c,d FROM my_table;
SELECT DISTINCT a,b,c,d FROM my_table GROUP BY a,b,c,d;

这些都没有奏效。有人可以在这里帮忙吗?

谢谢

注意 我想要单独的列 a, b, c d 的不同值。不是价值的独特组合

原文由 user765368 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 540
2 个回答

这有帮助吗?

 select
(SELECT group_concat(DISTINCT a) FROM my_table) as a,
(SELECT group_concat(DISTINCT b) FROM my_table) as b,
(SELECT group_concat(DISTINCT c) FROM my_table) as c,
(SELECT group_concat(DISTINCT d) FROM my_table) as d

原文由 Nesim Razon 发布,翻译遵循 CC BY-SA 3.0 许可协议

根据您的回答,我做了同样的事情,但提取一个 json 列 vars 包含 8 个值的数组全部合并在 1 列中,引号修剪了不同的值。

 SELECT DISTINCT TRIM(BOTH '"' FROM T1.`vars`) FROM (
    SELECT JSON_EXTRACT(`vars`, '$[1]') AS `vars`
         FROM my_table
         WHERE `vars` != '[]'
         UNION
    SELECT JSON_EXTRACT(`vars`, '$[2]') AS `vars`
         FROM my_table
         WHERE `vars` != '[]'
         UNION
    SELECT JSON_EXTRACT(`vars`, '$[3]') AS `vars`
         FROM my_table
         WHERE `vars` != '[]'
         UNION
    SELECT JSON_EXTRACT(`vars`, '$[4]') AS `vars`
         FROM my_table
         WHERE `vars` != '[]'
         UNION
    SELECT JSON_EXTRACT(`vars`, '$[5]') AS `vars`
         FROM my_table
         WHERE `vars` != '[]'
         UNION
    SELECT JSON_EXTRACT(`vars`, '$[6]') AS `vars`
         FROM my_table
         WHERE `vars` != '[]'
         UNION
    SELECT JSON_EXTRACT(`vars`, '$[7]') AS `vars`
         FROM my_table
         WHERE `vars` != '[]'
         UNION
    SELECT JSON_EXTRACT(`vars`, '$[8]') AS `vars`
         FROM my_table
         WHERE `vars` != '[]'
) T1
WHERE `vars` IS NOT NULL
AND `vars` != 'false';

希望它可以帮助…

原文由 Meloman 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题