按对SQL查询分组记录

时间:2014-08-12 17:07:55

标签: mysql sql

我有这样的表格,应该描述罗马特的一对。

    name| surname | city      | distance|sex | roomate
    -----------------------------------------------------
    Mike|  Tyson  | London    | 599     | M  | Oliver Red
    -----------------------------------------------------       
    Ron | Simpson | Newcastle | 4       | M  | John Godson
    -----------------------------------------------------
    Tim | Black   | Dover     | 311     | M  | 
    -----------------------------------------------------
    John| Godson  | Calais    | 111     | M  | Ron Simpson
    -----------------------------------------------------
    Oliver| Red   | Dover     | 99      | M  | Mike Tyson

是否有可能像对一样订购它和上面的距离柱?如果没有,是否可以像对一样订购数据?这更重要;)

    name  | surname |   city    | distance|sex | roomate
    -----------------------------------------------------
    Mike  |  Tyson  | London    | 599     | M  | Oliver Red
    -----------------------------------------------------
    Oliver| Red     | Dover     | 99      | M  | Mike Tyson
    -----------------------------------------------------
    John  | Godson  | Calais    | 111     | M  | Ron Simpson
    -----------------------------------------------------
    Ron   | Simpson | Newcastle | 4       | M  | John Godson
    -----------------------------------------------------
    Tim   | Black   | Dover     | 311     | M  | 
    -----------------------------------------------------

2 个答案:

答案 0 :(得分:0)

是。您可以按列名称订购结果。 (例如,距离,roomate)。

SELECT * FROM table ORDER BY distance, roommate;

答案 1 :(得分:0)

执行此操作的唯一方法是有条件地订购您的行...这意味着您需要知道行数... 我建议更改您的表格以包含房间号或其他内容这样你就可以订购......

这是一个显示条件排序的示例查询。

SELECT * 
FROM table
ORDER BY 
    CASE 
        WHEN 
            roomate = 'Oliver Red' 
         OR CONCAT(name, ' ', surname) = 'Oliver Red'
        THEN 1
        WHEN 
            roomate = 'Ron Simpson' 
         OR CONCAT(name, ' ', surname) = 'Ron Simpson'
        THEN 2
        ELSE 5
    END,
    distance DESC;

DEMO