我有一个表,该表有4列,每列都有十六进制值的颜色(请参见下面的捕获)

color_1 | color_2 | color_3 | color_4 |

#a0a0a0 | #f0f0f0 | #404040 | #e0e0e0 |
#e0e0e0 | #f0f0f0 | #c0c0c0 | #e06080 |
#e0e0e0 | #f0f0f1 | #c0c0c0 | #e06082 |
#e0e0e0 | #f0f0f0 | #c0c0c0 | #e06080 |


我想查询整个表以保存唯一的颜色,我做了如下

SELECT DISTINCT color_1, color_2, color_3, color_4
FROM `wp_images`


我得到的结果不是我期望的(请参见下面的捕获)

color_1 | color_2 | color_3 | color_4 |

#a0a0a0 | #f0f0f0 | #404040 | #e0e0e0 |
#e0e0e0 | #f0f0f0 | #c0c0c0 | #e06080 |
#e0e0e0 | #f0f0f1 | #c0c0c0 | #e06082 |
#e0e0e0 | #f0f0f0 | #c0c0c0 | #e06080 |


我期望的结果是:

#a0a0a0 , #f0f0f0 , #404040 , #e0e0e0 , #f0f0f1 , #c0c0c0 , #e06080 , #e06082


有什么帮助吗?

谢谢

最佳答案

试试这个:

SELECT DISTINCT color
FROM
(
SELECT color_1 as color FROM `wp_images`
UNION
SELECT color_2 as color FROM `wp_images`
UNION
SELECT color_3 as color FROM `wp_images`
UNION
SELECT color_4 as color FROM `wp_images`
)


内部的SELECT从表(color_1color_2color_3color_4)中获取每一列的列表,并将它们合并在一个唯一的表下,其中一列称为color。然后查询该表,其中包含4列中的所有颜色,将DISTINCT应用于它们。

10-05 19:44