2010-01-24 39 views
0

如果我有一個表,看起來像加入兩行歷歷

num 
1 
2 
3 
4 
5 
6 
7 
8 
9 

,我想在兩列

SELECT t1.num, t2.num FROM (SELECT * FROM x) AS t1, (SELECT * FROM x) AS t2 

顯示同桌所以結果集看起來像

num 
1,1 
2,2 
3,3 
4,4 
5,5 
6,6 
7,7 
8,8 
9,9 

我會如何去做這件事在MySQL

編輯

對不起我不想把事情複雜入手:但這裏是我其實想做

爲了澄清多一點,什麼我其實想做的是

num 
1,2 
2,3 
3,4 
4,5 
5,6 
6,7 
7,8 
8,9 

什麼,我希望能夠進一步做到:

SELECT t2.num - t1.num FROM .... 

注日在上面的查詢將返回所有1S但值在我的數據庫是什麼是預先顯示上述

由於不同

+0

你能否澄清一下,你想要得到的結果是兩列整數,或包含字符串一列? – 2010-01-24 23:59:06

+0

你爲什麼要這樣做?對我來說這似乎很奇怪。你能給我們一些背景嗎? – 2010-01-25 00:00:35

+0

澄清了一點..解釋什麼即時通訊做..我累了沒有真正意識到我問很多複雜的問題比我真正想要 – 2010-01-25 03:38:58

回答

4

我不明白爲什麼你不只是做一些更加簡單:

SELECT num AS num1, num AS num2 FROM x 

或者,如果你真的想爲一個字符串:

SELECT CONCAT(num, ',', num) AS num FROM x 

如果您想選擇兩次表,你可以加入表w ^第i本身,但我不明白爲什麼你會想這樣做:

SELECT CONCAT(T1.num, ',', T2.num) AS num 
FROM x AS T1 
JOIN x AS T2 
ON T1.num = T2.num 

,如果你需要從不同的行,如字段,則會更有意義'1,2','2,3'等等......當你提出你的問題時,你可能過於簡單化了嗎?你只是想學習如何使用連接語法?

+0

我的意思是選擇1,2:2,3但我想我做了過度簡化問題...所以我必須回答你的答案。 :D任何你可以做1,2:2,3 – 2010-01-25 03:33:24

+0

的機會我認爲你需要提供一些更真實的數據。它看起來像你想要的東西,按順序排列,爲每一行選擇rownum,然後加入T1.rownum + 1 = T2。rownum,但這比我在這個小小的評論框中寫的要複雜得多,這與你提出的問題完全不同 - 你應該提出一個新問題,並且更好地描述你想解決的問題。 – 2010-01-25 07:37:08

+0

您是否正在使用時間間隔? – 2010-01-25 07:38:08

3

您可以刪除其他所有內容,並且只需在select語句中列出兩次列。所以在這種情況下,它會是:

Select x.num as First_Num, x.num as Second_num from x 
0

試試這個SQL查詢:

SELECT CONCAT(num, ',', num) AS num FROM x