Mysql как выбрать только строку в той же таблице и тот же идентификатор, но другое значение - PullRequest
0 голосов
/ 04 августа 2020

У меня есть этот набор данных:

Таблица UserPlans:

+----+------+-------+-----------------------+
| ID | userId | name  |      deletedAt      | 
+----+--------+-------+---------------------|
|  1 |   1    | plan1 | 2020-07-30 13:41:50 |
+----+--------+-------+---------------------|
|  2 |   1    | plan3 | NULL                |
+----+--------+-------+---------------------|
|  3 |   2    | plan2 |2020-07-30 15:30:10  |
+----+--------+-------+---------------------|

как выбрать только эту строку (с ID 3), так как эти данные были удалены, но не имеют данных с deletedAt = NULL с тем же userId?

+----+--------+-------+---------------------|
|  3 |   2    | plan2 |2020-07-30 15:30:10  |
+----+--------+-------+---------------------|

1 Ответ

1 голос
/ 04 августа 2020

Кажется, вам нужны строки, в которых userid не имеет другой строки, deletedAt которой null. В таком случае вы можете использовать not exists и коррелированный подзапрос:

select t.*
from mytable t
where not exists (
    select 1
    from mytable t1
    where t1.userid = t.userid and t1.deletedAt is null
)
...