如果另一条记录中存在值,则MySQL选择记录

时间:2011-08-17 09:37:12

标签: mysql select record

我需要从表中选择记录,但前提是当一个值大于当前记录的值并且用户是相同的时候。

这是我目前的表格:

    +---------+------------+-----------+
    | user_id | scheme_val | scheme_id |
    +---------+------------+-----------+
    |    1    |   text1    |     1     |
    |    1    |   text2    |     2     |
    |    2    |   text1    |     1     |
    +---------+------------+-----------+

所以基本上我需要选择所有记录,只要没有来自具有更高scheme_id的同一用户的另一条记录。所以在这张桌子上它只会带回第二排而不是第一排。原因是对于用户1的第一行,表中有另一行,其中scheme_id 1大于该行。

我希望这有道理吗?

提前致谢。

2 个答案:

答案 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
            )