如何在MySQL中将多列作为一个列进行处理?

Iva*_*van 3 mysql sql select

a,bc包含一些相同性质的值.我需要选择所有唯一值.如果我只有一个列,我会使用类似的东西

amytableORDER BY中选择DISTINCT a;

但我需要对待a,b并将c列作为一个,并获得它们之间发生的所有独特值.

例如,让这是一个CSV表示mytable,第一行命名列:

a, b, c
1, 2, 3
1, 3, 4
5, 7, 1
Run Code Online (Sandbox Code Playgroud)

查询的结果是:

1
2
3
4
5
7
Run Code Online (Sandbox Code Playgroud)

更新:我不明白为什么你们所有人都建议额外包装它SELECT?在我看来,答案是

(SELECT `a` AS `result` FROM `mytable`)
UNION (SELECT `b` FROM `mytable`)
UNION (SELECT `c` FROM `mytable`)
ORDER BY `result`;
Run Code Online (Sandbox Code Playgroud)

不是吗?

AJP*_*AJP 5

抱歉,我想念你的问题.这是更新的查询.

select a from my table
UNION
select b from my table
UNION
select c from my table
Run Code Online (Sandbox Code Playgroud)

  • 区别是不必要的联合过滤它们 (2认同)

Mos*_*cho 5

那么你想要一个列都具有来自a,b和c的唯一值吗?试试这个:

(select a as yourField from d1)
union
(select b from d2)
union
(select c from d3)
order by yourField desc
limit 5
Run Code Online (Sandbox Code Playgroud)

工作实例

编辑要求更改后... ...有你有order bylimit你的要求.当然,在这个例子中你只能得到5条记录