我在我的数据库中有两个表:
user_id | user_name
--------+----------
1 |jim
2 |john
user_id | status
--------+----------
1 |ONE
2 |TWO
1 |THREE
状态是一个枚举类型,定义如下:
status enum('ONE','TWO','THREE') NOT NULL
这应该保证ONE是最低的状态,THREE是最高的状态。我正在以下面的方式检索用户的状态:
SELECT user_id, type, status, event_date, valid_from, valid_to
FROM status_event
WHERE user_id = 1
ORDER BY status DESC
LIMIT 1;
正如预期的那样,由于order by使用状态的顺序,它给了我状态THREE。
现在我想编写SQL以检索所有用户及其最高状态值的列表。 我遇到了麻烦,因为MAX()函数明显将状态值作为字符串进行比较,并返回TWO作为最大值。 此外,我不知道该如何连接它们,是否可以做到这一点? 我需要一个子查询吗?
我想要的结果如下:
user_name| status
---------+----------
jim |THREE
john |TWO