mysql - 将 mysql 列合并到行

标签 mysql sql merge

我有一个具有以下结构的表:

+-----+------------+------------+------------+------------+
| ID  |  FEATURE1  |  FEATURE2  |  FEATURE3  |  FEATURE4  |
+-----+------------+------------+------------+------------+
|  1  |  red       |  blue      |  black     |  grey      |
|  2  |  yellow    |            |            |            |
|  3  |  orange    |  red       |  green     |  golden    |
|  4  |  orange    |  grey      |  blue      |            |

我想做的是查询表格并返回所有可能的功能以用于自动完成调用。我需要查询仅返回唯一值。

SELECT (FEATURE1, FEATURE2, FEATURE3, FEATURE4, FEATURE5) FEATURE
FROM products
WHERE `FEATURE` LIKE 'gr%\'

我想要的输出是:

+----------+
| FEATURE  |
+----------+
|  green   |
|  grey    |

最佳答案

基本上,您可以使用 UNION 将所有列组合成一行。

SELECT  * 
FROM
(
    SELECT FEATURE1 FEATURE FROM TableName
    UNION
    SELECT FEATURE2 FEATURE FROM TableName
    UNION
    SELECT FEATURE3 FEATURE FROM TableName
    UNION
    SELECT FEATURE4 FEATURE FROM TableName
) sub
WHERE   FEATURE LIKE 'gr%'

关于mysql - 将 mysql 列合并到行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15435346/

相关文章:

mysql - 插入自定义自增字段

php - 在一个查询中获取作者用户名和上次更新用户名

sql - 这些数据库设计中哪个更好?

java - Apache POI 合并 Word 文档中表格中的单元格

javascript - 如何在 Javascript 中将嵌套对象合并到它们的父对象中?

mysql - 如何左连接 2 个不同数据库上的 2 个表?

mysql - 由 csv 文件加载数据填充的 mysql 表没有结果

mysql - 当第三个表中可能不存在值时从 3 个表中进行选择

mysql - 如何获取MySQL存储过程中报告的每天登记的额外小时数

merge 后git分支恢复