从所有列中选择不同的值
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 展示您拥有的一些样本数据和预期结果,他可以在睡梦中这样做以上是关于从所有列中选择不同的值的主要内容,如果未能解决你的问题,请参考以下文章