2016-06-08 2 views
2

Если у меня есть таблица MySql со значениямиПоказать значение столбца дважды в MySql Выберите

col1 
===== 
1 
1 
1 
5 
5 
5 
5 
7 
7 

Я хочу, чтобы все различных значения col1 (т.е. 1,5,) и получить выход с одним ЗЕЬЕСТОМ следующими :

1~1 
5~5 
7~7 

Как это сделать?

+0

Что делать, если существует более двух одинаковых значений? каков будет ваш выход? – 1000111

+0

@ 1000111: Я перефразирую свой вопрос, чтобы показать, что я действительно хочу? Спасибо за напоминание. –

+1

Оба ответа дадут вам то, что вы хотите, где замешательство? Вы даже пытались запустить скрипку? –

ответ

3

Вот запрос:

Использование сепаратора ~ в GROUP_CONCAT функции.

Запрос # 1 случай использования сценария: Если вы хотите, чтобы отделить col1 значения от прилива (~) только тогда, когда соответствующее значение имеет одинаковые значения по всей таблице.

Запрос # 1:

SELECT 
GROUP_CONCAT(col1 SEPARATOR '~') output 
FROM scotttable 
GROUP BY col1; 

SQL FIDDLE DEMO

Примечание: Это будет работать для любого числа одинаковых значений.


Запрос # 2 использование сценария: Только если вы хотите distinct col1 значения независимо от того, если они имеют соответствующие одинаковое значение по таблице существует или нет.

Запрос # 2:

SELECT 
CONCAT(col1,'~',col1) output 
FROM scotttable 
GROUP BY col1; 

FIDDLE OF THIS QUERY

+0

Да! Я хочу, чтобы они были одинаковыми. И что, если значение повторяется более двух раз в таблице? Скажем, 3 из '1', 4 из '5'. –

+0

Для этого образца ввода '1 1 1 4 5' вы получите выход как' 1 ~ 1 ~ 1 5' через первый запрос. – 1000111

+0

Пожалуйста, проверьте это [** sql fiddle **] (http://sqlfiddle.com/#!9/37714/1/0). Пример ввода «1 1 1 5 5 7 7» @ScottChu – 1000111

3

Вот вариант с использованием подзапроса:

SELECT CONCAT(t.value, '~', t.value) 
FROM 
(
    SELECT DISTINCT col1 AS value 
    FROM yourTable 
) t 

Перейдите по ссылке ниже для работающей демо:

SQLFiddle

+0

Привет Тим! Для значений, которые не имеют одинакового значения в таблице, это может привести к неправильному выводу. Рассмотрим этот набор входных значений '1 ' – 1000111

+0

@ 1000111 'Я хочу, чтобы получить отчетливое значение col1' ... какая часть вопроса не ясно, или что мне не хватает? –

+0

Извините. Может быть, я ошибаюсь. Ввод и вывод образца дали мне неявное ощущение: строки на выходе должны состоять из одинаковых значений, разделенных приливом ('~'). – 1000111

Смежные вопросы