2016-07-21 87 views
0

我有三個字段的表,如何在mysql中對列進行排序並獲取另一列的排序值?

id   (int) 
shortnameid (varchar) 
name  (varchar) 

name包含例如數和字符串:(01.john)

我需要使用id表中的排序ASC並獲得排序name列的順序(排序後由id)。 這將返回嚴重的排序號:

SELECT * FROM `tablename` ORDER BY `tablename`.`id` ASC 

但我需要name列的排序值(後排序id表)。訂購

+0

你是什麼意思「這個回報率嚴重排序號」? – nayana

回答

1

插件名稱列由

SELECT * FROM `tablename` ORDER BY `tablename`.`id` ASC,`tablename`.`name`; 
+0

但我需要名稱列,它必須按ID排序。 –

0

你的問題不是很清楚。

select `name` 
FROM 
`tablename` 
ORDER BY `tablename`.`id` ASC 

將返回name只,由id ASC

整理如果你想讓它通過name整理過,那麼列表:

select `name` 
FROM 
`tablename` 
ORDER BY `tablename`.`id` ASC, `tablename`.`name` 

如果這還是對方的回答是不是有什麼你正在尋找,那麼你需要重申你的問題。

+1

這將不會運行在MySQL ..檢查http://stackoverflow.com/a/9719904/3876138方括號.. – nayana

0

首先..你的設計是錯的..你不滿足1 Normal Form - 這是不一個列混合多種信息..

可以使兩列的主鍵(如果ID不是唯一的)在同一時間:

PRIMARY KEY(id, name) 

你並不需要創建額外的列有獨特的東西..


而且其他的答案是正確的..Ø沒有人知道你想要什麼。

這就是你通過你的查詢:

1 Bill 1.Bill 
2 AAA 2.AAA 
2 ZZZ 2.ZZZ 
2 BBB 2.BBB 
3 AAA 3.AAA 

通過做馬赫什Madushanka查詢你:

1 Bill 1.Bill 
2 AAA 2.AAA 
2 BBB 2.BBB 
2 ZZZ 2.ZZZ 
3 AAA 3.AAA 

你想實現什麼?

UPDATE

你想是這樣的(根據給出的示例數據上面)?

id | names   | .... | 
----------------------- 
1 | "Bill"   | 
2 | "AAA, BBB, ZZZ" | 
3 | "AAA"   | 
+0

排序依據升序的id和獲取列(名稱)這是按順序排列(升序)。然後,我將插入到我的應用程序的下拉列表 –

+0

@srirams您的英語使您很難理解您的意思(我也不是英語母語的人..)。只是猜測,但是:你想要列出所有名稱串聯在一個字符串中的每個ID - 這些列表是按ID給你的?我會更新答案 - 但請給我們一些例子在mysql輸出.. – nayana

+0

我想按名稱排序s.no例如01.apple,02.mango的前三個字母,所以沒有.. 110.pineapple.here我需要按照前三個字母(數字值)進行排序。但是在數據庫中,它是在varchar type.im中對sql進行排序qwery.help對我進行排序。@ otopolsky –

0

您可以用相當神祕的語法做到這一點:

update table name 
    set id = (select cnt 
        from (select count(*) as cnt 
          from table Name Name2 
          where Name2.shortnameid >= table name.shortnameid 
         ) 
        ) 
相關問題