MYSQL:为给定的过滤器选择一行,并选择键的最大值

时间:2018-11-01 12:12:28

标签: mysql sql

我有一个表(tUsuariosLog),其中包含给定用户的更新信息的历史记录。因此,如果我想读取给定用户的当前信息,则需要在键列中使用键值最大的行(键列具有auto_increment)。

这是我用来获取它的查询。

SELECT * FROM tUsuariosLog WHERE cUid = '15' AND cKeyid = (SELECT MAX(cKeyid) FROM tUsuariosLog WHERE cUid = '15')

看来这是实现我想要的东西的一种过于复杂的方法(尽管确实可以工作)。

我的问题是在查询中是否有更好的方法来获取我想要的查询。

1 个答案:

答案 0 :(得分:0)

如何使用SELECT DISTINCT ON (id) * FROM ( VALUES (1, 'y'), (1, 'x'), (2, 'z') ) s(id, type) ORDER BY id, CASE type WHEN 'x' THEN 1 WHEN 'y' THEN 2 WHEN 'z' THEN 3 END; order by

limit

我猜测SELECT ul.* FROM tUsuariosLog ul WHERE cUid = 15 ORDER BY cKeyid DESC LIMIT 1; 是一个数字,而不是字符串,因此我删除了单引号。

为了提高性能,您希望在cUid上建立索引。