我有一个表(tUsuariosLog),其中包含给定用户的更新信息的历史记录。因此,如果我想读取给定用户的当前信息,则需要在键列中使用键值最大的行(键列具有auto_increment)。
这是我用来获取它的查询。
SELECT * FROM tUsuariosLog WHERE cUid = '15' AND cKeyid = (SELECT MAX(cKeyid) FROM tUsuariosLog WHERE cUid = '15')
看来这是实现我想要的东西的一种过于复杂的方法(尽管确实可以工作)。
我的问题是在查询中是否有更好的方法来获取我想要的查询。
答案 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
上建立索引。