mysql-从多个列中选择并忽略重复的结果

z0qdvdin  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(328)

我想运行一个select语句,它包含4个不同的列,让我们称它们为col1、col2、col3、col4,并按字母顺序显示每个列中的所有文本,同时忽略任何重复项。
例如,该表包含以下数据。

col1   |   col2     |   col3    |   col4   
===============================================
animal  |            |           |
create  |   animal   |           |
destroy |            |           |
 giant  |   create   |  animal   |
create  |   destroy  |   belt    |
animal  |   giant    |  animal   |  create  
animal  |            |           |

预期结果应为:
动物

创造
破坏
巨人

v64noz0r

v64noz0r1#

你可以用 UNION :

SELECT col1 FROM tab
UNION
SELECT col2 FROM tab
UNION
SELECT col3 FROM tab
UNION
SELECT col4 FROM tab
ORDER BY col1

编辑:
避免 NULL 和空字符串:

SELECT *
FROM (SELECT col1 FROM tab
    UNION
    SELECT col2 FROM tab
    UNION
    SELECT col3 FROM tab
    UNION
    SELECT col4 FROM tab) sub
WHERE sub.col1 IS NOT NULL AND sub.col1 <> ''
ORDER BY col1;

相关问题