2016-06-08 34 views
2

如果我有一個值顯示列值的兩倍

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

我想COL1(即1,5,)的所有不同值的MySQL表和一個SELECT語句獲取輸出如下:

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

是的!我希望他們是相同的。如果這個價值在桌子上重複兩次以上呢?說'1'中的3個,'5'中的4個。 –

+0

對於此示例輸入'1 1 1 4 5',您將通過第一個查詢得到類似於'1〜1〜1 5'的輸出。 – 1000111

+0

請檢查此[** sql小提琴**](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