web-dev-qa-db-ja.com

MySQL複数列の昇順

私はこのクエリを昇順で実行しようとしています:

SELECT title,project_index 
FROM projectdetail  
WHERE project_index BETWEEN 1 AND 6 
ORDER BY title, project_index ASC;

昇順で2つの列が必要ですが、上記のクエリはASCの順序で1つの列のみの結果を返します。

12
user1135693

昇順はデフォルトほとんど(すべてではない場合)DBMSなので、ステートメントはweirdただし、それでも、指定子ASCまたはDESCを追加することで、個々の列の順序を指定できます。

あなたの声明はその後になります

SELECT  title
        , project_index 
FROM    projectdetail 
WHERE   project_index BETWEEN 1 AND 6 
ORDER BY 
        title ASC
        , project_index ASC

編集

@Arvoと@Demsで言及されているように、現在、titlefirstをソートしており、project_indexで同じタイトルをソートしています。 project_indexを最初にソートする場合は、最初にORDER BY句に配置する必要があります。

その後、ステートメントは次のようになります

SELECT  title
        , project_index 
FROM    projectdetail 
WHERE   project_index BETWEEN 1 AND 6 
ORDER BY 
        project_index ASC
        , title ASC

ASCがデフォルトのソート順であるため、それらをすべて省略することができます

SELECT  title
        , project_index 
FROM    projectdetail 
WHERE   project_index BETWEEN 1 AND 6 
ORDER BY 
        project_index
        , title
28

Mysqlを使用している場合は、 this を確認してください。

彼らが言うように、あなたはSELECT * FROM t1 ORDER BY key_part1 DESC, key_part2 ASC;

4
Ivaylo Petrov

ORDER BYタイトルASC、project_index ASC;

 SELECT title,project_index 
 FROM projectdetail  
 WHERE project_index BETWEEN 1 AND 6 
 ORDER BY title ASC, project_index ASC;

さらに、ORDER BY col1 ASC, col2 ASC, col3 DESC;などの列をさらに追加できます

3
IRSHAD

これを試して:

SELECT title, project_index 
FROM projectdetail  
WHERE project_index BETWEEN 1 AND 6 
ORDER BY project_index, title;
0
Saharsh Shah

両方の列を昇順で並べ替えようとしています。 mysqlでは、クエリで複数の順序を使用できます。しかし、ここでは注文の優先順位が非常に重要です。最初のものが最も優先され、次のものが2番目に優先されます。
つまり、クエリは

SELECT title,project_index FROM projectdetail  
    WHERE project_index BETWEEN 1 AND 6 ORDER BY title, project_index ASC;

ここで、タイトル順が優先されます。 mysqlは最初に「title」列を昇順で並べ替え、結果を表示します。次に、それだけが「project_index」列を注文します。だから、思い通りに答えられない。

0
php