繁体   English   中英

选择不同的SET值作为单个mysql列?

[英]selecting distinct SET values as a single mysql column?

假设我有id(主键列)和val列(SET类型,带有一些允许的值):

set('a','b','c','d','e','f')

我需要顶部选择这些值作为列,第一列为id

+-----+------+
| id  | val  |
+-----+------+
| 102 | 'a'  |
| 102 | 'e'  |
| 102 | 'f'  |

不确定如何实现。

select id, ???? from table where id = 102;

正如我在上面的评论中所提到的,您可能应该规范化数据,以使此问题完全消失。

但是,就现状而言,将需要与包含所有可能的SET值的表SET ,而该值在记录的SET 您可以维护该表的永久副本,也可以使用UNION子查询动态构建该表:

SELECT my_table.id, set_options.val
FROM my_table JOIN (
            SELECT 'a' AS val
  UNION ALL SELECT 'b' UNION ALL SELECT 'c' UNION ALL SELECT 'd'
  UNION ALL SELECT 'e' UNION ALL SELECT 'f'
) AS set_options ON FIND_IN_SET(set_options.val, my_table.val) > 0
WHERE id = 102

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM