Как выбрать одну строку каждого условия в MySQL? - PullRequest
0 голосов
/ 10 мая 2019

У меня проблема с моим кодом. Я хочу получить только одну строку для каждого условия в MySQL.

У меня есть такая таблица:

ID - Position  - Content
1       2         abc
2       1         def
3       1         ghk
4       3         pol
5       2         lop
6       4         gty

Итак, я хочу, чтобы результат возвращался в следующем виде: позиция = 1 -> строка с самым высоким идентификатором, а затем переход в позицию = 2 -> строка с самым высоким идентификатором. Я понятия не имею, чтобы закодировать это.

Ответы [ 3 ]

1 голос
/ 10 мая 2019

Используйте подзапрос для проверки идентификатора

drop table if exists t;
create table t
(ID int, Position int, Content varchar(3));
insert into t values
(1   ,    2    ,     'abc'),
(2   ,    1    ,     'def'),
(3   ,    1    ,     'ghk'),
(4   ,    3    ,     'pol'),
(5   ,    2    ,     'lop'),
(6   ,    4    ,     'gty');


select t.*
from t
where t.id = (select min(id) from t t1 where t1.position = t.position);

+------+----------+---------+
| ID   | Position | Content |
+------+----------+---------+
|    1 |        2 | abc     |
|    2 |        1 | def     |
|    4 |        3 | pol     |
|    6 |        4 | gty     |
+------+----------+---------+
4 rows in set (0.00 sec)
0 голосов
/ 10 мая 2019

попробуйте этот запрос ..

 SELECT DISTINCT * FROM table-name ORDER BY ID ASC;

DISTINCT работает с одним столбцом.DISTINCT для нескольких столбцов не поддерживается.один и тот же столбец не может быть напечатан, и порядок по идентификатору asc используется, и все записи печатаются 1 - n означает минимальный идентификатор

0 голосов
/ 10 мая 2019

Вы можете попробовать как ниже запрос

SELECT t.*
FROM t
WHERE t.id IN (SELECT min(id) FROM t GROUP BY position);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...