I have a basic key-value table, that has some data in it for each user. With the updated mysql it has the sql_mode
set to only_full_group_by
(new default) when you do a group by. When I try to run this simple query:
select * from user_features
where user_id = 1
group by feature_key
I get the following error:
SQL Error (1055): Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'date.user_features.user_id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
With this example data, I want to group based on the feature_key
(I will add a group_concat
once the group error is fixed).
| user_id | feature_key | feature_value |
+---------+-------------+---------------+
| 1 | color | red |
+---------+-------------+---------------+
| 1 | age | 15 |
+---------+-------------+---------------+
| 1 | color | blue |
+---------+-------------+---------------+
The table looks like this:
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`)
)
What query can I run to fix this or what index(es) do I need to add?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…