从所有列中选择不同的值

Posted

技术标签:

【中文标题】从所有列中选择不同的值【英文标题】:select distinct values from all columns 【发布时间】:2016-07-23 15:39:05 【问题描述】:

我只想从每列中选择不同的值。不明显的组合。 这是我的查询,但它返回所有列的不同组合。我希望每一列都显示自己不同的值,而不依赖于其他列。

 $sql= "select distinct
            CASE WHEN col1 not regexp '[0-9]' THEN col1 else null end as col1
            ,CASE WHEN col2 not regexp '[0-9]' THEN col2 else null end as col2
            ,CASE WHEN col3 not regexp '[0-9]' THEN col3 else null end as col3 from table_name";

它返回这个:

col1| col2| col3
a      1     3
b      2     4
c      2     4
d      1     3

你们可以看到 col2 和 col3 的值并不不同,我也只想与 col2 和 col3 不同。谢谢!

【问题讨论】:

你能详细说明but not working吗?您能向我们展示示例数据以及您想要的输出吗? @TimBiegeleisen 现在检查它希望你能得到它。 Distinct 在所有列中起作用,而不是在它们中单独起作用,在 distinct col1, col2, col3 的情况下...并且您的 case stmt 不会影响这一点 样本数据和预期结果将帮助我们了解您的需求。 @Drew 所以我想分别选择所有 col1、col2、col3 的不同值。不是所有这些列的独特组合。 【参考方案1】:

关于你想要什么,我最好的猜测是使用union all

select distinct (case when col1 not regexp '[0-9]' then col1 end) as col1, 'col1' as which
from table_name
union all
select distinct (case when col2 not regexp '[0-9]' then col2 end) as col2, 'col2' as which
from table_name
union all
select distinct (case when col3 not regexp '[0-9]' then col3 end) as col3, 'col3' as which
from table_name;

这会产生一个包含两列的结果,一列是列名,另一列是列中的不同值。

【讨论】:

它不工作。很简单,我想要分别来自所有列的不同值。希望你能明白。 如果您向 Gordon 展示您拥有的一些样本数据和预期结果,他可以在睡梦中这样做

以上是关于从所有列中选择不同的值的主要内容,如果未能解决你的问题,请参考以下文章

从 SQLITE 中的两列中选择不同的值

如何创建临时表或仅从循环中的列中选择不同的值

Pyspark - 从每列中选择不同的值

从同一个表中的多个列中选择不同的值

从数据库中选择一列中的值不同且限制为 5 个最新的行

ORACLE 仅在某些列中选择不同的值