Подтвердить что ты не робот

Выбор отдельной комбинации столбцов в mysql

У меня есть таблица mysql, которая выглядит так:

1   value1    value2    3534
2   value1    value1    8456
3   value1    value2    3566
4   value1    value3    7345
5   value2    value3    6734

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

1   value1    value2    3534
2   value1    value1    8456
4   value1    value3    7345
5   value2    value3    6734

Я нашел несколько примеров о том, как это сделать, но все они выбираются отдельно для каждого столбца отдельно.

4b9b3361

Ответ 1

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

SELECT id, col2, col3, col4
FROM yourtable
WHERE id IN
(
    SELECT MIN(id)
    FROM yourtable
    GROUP BY col2, col3
)

Посмотрите, как он работает в Интернете: sqlfiddle

Ответ 2

Обновление 1

Лучше вы используете это против выше.

SELECT id, col2, col3, col4
FROM yourtable
GROUP BY col2, col3;

Демо

Я говорю, потому что, используя CONCAT, я не получаю желаемого результата в в этом случае. Первый запрос возвращает мне 5 строк, однако CONCAT возвращает мне 4 строки, которые НЕКОТОРЫ.

Надеюсь, вы поняли мою мысль.


Предполагается, что столбцы в таблице: (id, col2, col3, col4).

SELECT DISTINCT(CONCAT(col2, col3)) as "dummy column", id, col2, col3, col4
FROM yourtable
GROUP BY CONCAT(col2, col3);

ИЛИ

SELECT id, col2, col3, MIN(col4)
FROM yourtable
GROUP BY col2, col3;

живой рабочий пример

Ответ 3

Предполагая, что столбцы в таблице (id, col1, col2, col3), вы можете:

SELECT  *
FROM    YourTable yt
JOIN    (
        SELECT  MIN(id) as minid
        FROM    YourTable
        GROUP BY
                col1, col2
        ) filter
ON      filter.minid = yt.id

Ответ 4

Этот запрос гарантирует, что комбинация столбцов1 и столбца2 уникальна при выборе минимального значения столбца три

SELECT col1, col2, MIN(col3)
FROM yourTable
GROUP BY col1, col2

Ответ 5

Простейший запрос для этого -

SELECT col1, col2, MIN(col3)
FROM myTable
GROUP BY col1, col2

Ответ 6

Использование группы по методу возвращает мне дополнительные строки, где, как явная проверка каждого поля, хотя и длиннее возвращает то же самое количество записей, что и count (Distinct..)

SELECT id, col2, col3, col4
FROM yourtable yt
WHERE id =
(
 SELECT MIN(id)
 FROM yourtable yt1
 WHERE yt.col2 = yt1.col2
 AND yt.col3 = yt1.col3
)