簡體   English   中英

如何在MySQL表中合並多個列的非空值與空值?

[英]How to merge null values with not null values of several columns in mysql table?

我有以下示例表:

 || *Column 1* || *Column 2* || *Column 3* || *Column 4* || 
 ||     a      ||   null     ||     b      ||     a      || 
 ||     b      ||     f      ||    null    ||     f      ||
 ||   null     ||     a      ||     a      ||     b      ||

結果表必須為:

 || *Column 1* || *Column 2* ||
 ||     a      ||     b      ||
 ||     b      ||     f      ||
 ||     a      ||     b      ||

謝謝!

SELECT one,
    CASE WHEN one != two THEN two
        WHEN one != three THEN three
        WHEN one != four THEN four END AS two
FROM (  SELECT COALESCE(col1, col2, col3, col4) AS one,
            COALESCE(col2, col3, col4, col1) AS two,
            COALESCE(col3, col4, col1, col2) AS three,
            COALESCE(col4, col1, col2, col3) AS four
        FROM four_columns) AS h

考慮到您在示例中希望得到的結果,無法想到一個更簡單的解決方案。

由於僅存在2列,這顯然淘汰了這4列具有2個以上不同字母的情況。 但是,如果有至少2個唯一字母,它將不會顯示重復項,也不會顯示NULL

如果我對您的理解很好,那么您想要做的就是將第3列與第1列合並,將第4列與第2列合並。

此職位上已經回答了以下問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM