我有一个基本的键值表,其中包含每个用户的一些数据。使用更新后的 mysql,当您进行分组时,它会sql_mode
设置为(新默认值)。only_full_group_by
当我尝试运行这个简单的查询时:
select * from user_features
where user_id = 1
group by feature_key
我收到以下错误:
SQL 错误 (1055):SELECT 列表的表达式 #1 不在 GROUP BY 子句中,并且包含在功能上不依赖于 GROUP BY 子句中的列的非聚合列“date.user_features.user_id”;这与 sql_mode=only_full_group_by 不兼容
使用此示例数据,我想根据(修复组错误后feature_key
添加一个)进行分组。group_concat
| user_id | feature_key | feature_value |
+---------+-------------+---------------+
| 1 | color | red |
+---------+-------------+---------------+
| 1 | age | 15 |
+---------+-------------+---------------+
| 1 | color | blue |
+---------+-------------+---------------+
该表如下所示:
CREATE TABLE `user_features` (
`user_id` int(10) unsigned NOT NULL,
`feature_key` varchar(50) NOT NULL,
`feature_value` varchar(50) NOT NULL,
UNIQUE KEY `user_id_feature_key_feature_value` (`user_id`,`feature_key`,`feature_value`)
)
我可以运行什么查询来解决这个问题,或者我需要添加什么索引?