MySQL выберите запись, если значение существует в другой записи - PullRequest
0 голосов
/ 17 августа 2011

Мне нужно выбрать записи из таблицы, но только если значение существует на 1 больше, чем значение в текущей записи, и пользователь такой же.

Это моя текущая таблица:

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

Так что в основном мне нужно выбрать все записи, если нет другой записи от того же пользователя с более высоким значением sche__id. Таким образом, в этой таблице будет возвращен только второй и третий ряд, а не первый ряд. Причина в том, что для первой строки для пользователя 1 есть еще одна строка в таблице со значением sche_id 1, превышающим эту строку.

Надеюсь, это имеет смысл?

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 17 августа 2011

Попробуйте следующий запрос.Это будет работать наверняка, но не будет наиболее оптимизированным.Это немного из коробки, но мне очень интересно узнать, есть ли у кого-нибудь еще какие-либо решения.

SELECT
    *
FROM
    users
WHERE
    CONCAT(user_id, ":", scheme_id)
        IN
            (
                SELECT
                    CONCAT(user_id, ":", MAX(scheme_id))
                FROM
                    users
                GROUP BY
                    user_id
            )
0 голосов
/ 17 августа 2011

Должно быть возможно при объединении подзапроса с той же таблицей:

select * from user u1 where u1.scheme_id =
( select max(u2.scheme_id) from user u2
  where u1.user_id = u2.user_id );
...