我需要从表中选择记录,但前提是当一个值大于当前记录的值并且用户是相同的时候。
这是我目前的表格:
+---------+------------+-----------+
| user_id | scheme_val | scheme_id |
+---------+------------+-----------+
| 1 | text1 | 1 |
| 1 | text2 | 2 |
| 2 | text1 | 1 |
+---------+------------+-----------+
所以基本上我需要选择所有记录,只要没有来自具有更高scheme_id的同一用户的另一条记录。所以在这张桌子上它只会带回第二排而不是第一排。原因是对于用户1的第一行,表中有另一行,其中scheme_id 1大于该行。
我希望这有道理吗?
提前致谢。
答案 0 :(得分:0)
子查询加入同一个表时应该可以:
select * from user u1 where u1.scheme_id =
( select max(u2.scheme_id) from user u2
where u1.user_id = u2.user_id );
答案 1 :(得分:0)
尝试以下查询。它肯定会起作用,但不会是最优化的。它有点开箱即用,但我非常有兴趣听听是否有任何其他解决方案。
SELECT
*
FROM
users
WHERE
CONCAT(user_id, ":", scheme_id)
IN
(
SELECT
CONCAT(user_id, ":", MAX(scheme_id))
FROM
users
GROUP BY
user_id
)