Как получить отличные записи, но на основе первых 2 цифр только в MySQL - PullRequest
0 голосов
/ 22 апреля 2020

Я хочу получить отдельные записи (только одно поле) из таблицы MySQL, и это поле содержит только цифры.

Пример:

00010000
01111100
01112000
01118000
02301201

Но отдельные записи рассматриваются на основе первых 2 цифр. Таким образом, в приведенном выше случае мне нужно вернуть только 3 записи:

00010000
01112000
02301201

Более того, я хотел бы обрезать остальные цифры, поэтому фактический конечный результат должен быть:

00
01 
02

Столь внятный и группируемый здесь не будет сокращаться. Есть идеи?

Ответы [ 3 ]

1 голос
/ 22 апреля 2020

Предполагая, что вы хотите наименьшее значение из числа дубликатов, вы можете попробовать:

SELECT t1.col
FROM yourTable t1
INNER JOIN
(
    SELECT LEFT(col, 2) AS prefix, MIN(col) AS min_col
    FROM yourTable
    GROUP BY LEFT(col, 2)
) t2
    ON LEFT(t1.col, 2) = t2.prefix AND
       t1.col = t2.min_col;

Примечание: числа в MySQL не начинаются с нуля, поэтому ваше требование (и этот ответ) только составляют смысл, если ваш столбец текстовый.

1 голос
/ 22 апреля 2020

DISTINCT будет отлично работать с LEFT для получения желаемых результатов:

SELECT DISTINCT(LEFT(value, 2)) AS value
FROM data
ORDER BY value 

Вывод

00
01
02

Демонстрация на dbfiddle

0 голосов
/ 22 апреля 2020

Если вы хотите только усеченное значение, попробуйте это:

SELECT SUBSTRING(yourColumn,1,2) as trimmedval
FROM Table
GROUP BY SUBSTRING(yourColumn,1,2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...