• ベストアンサー

SQLで

order by を使って order by a asc,b desc,c asc ってしたいのですが、動きません。 どうしたらいいのでしょうか? よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • OsieteG00
  • ベストアンサー率35% (777/2173)
回答No.1

OS,DBMSは何ですか? テーブル名、項目名はOKですか? ;は正しいですか?

関連するQ&A

  • SQL文「DISTINCT」の「ORDER BY」について

    SQL文「DISTINCT」の「ORDER BY」について教えて下さい。 A列をDISTINCTで重複行の排除をしています。 その後、B列でORDER BYをかけたいのですが、エラーが 出てしまいます。A列でのORDER BYは成功します。 何か良い方法があれば教えて下さい。 よろしくお願いします。 SQL="SELECT DISTINCT A列 from table " &_ "WHERE (table.C列='100') " &_ "ORDER BY (table.B列) ASC " ⇒エラー    "ORDER BY (table.A列) ASC " ⇒成功

  • order by asc,desc混合index

    order by で asc ,desc混合する場合indexが使用できないと思いますが、 たとえば、col1,col2,col3があったとして order by col1 asc, col2 desc, col3 asc ➡ order by col1 asc ,99999999 - col2 asc , col3 asc などのように、 col2を、カラムが取りうる最大値から引いてやることでascに置き換えても indexはかからないでしょうか?

    • ベストアンサー
    • MySQL
  • sql文の書き方

    いつもこちらで勉強させていただきます。 環境:mysql5.0 PHP5.1.4 apache 2.0.58 いま画面からパラメータ5受け取りました。 これをもってsql文を書こうとするが必須入力項目ではないため一つずつ判断して書いたら30種類の可能性がでてきてすごく長くなってしまいましたがなんか短縮させるいい方法はありませんか?またこれをファンクションで作り直そうとしたらちょっとうまくいかないのでどなたか教えてもらえませんか?ファンクションで渡すパラメータ($sql?$query?あるいは各パラメータですか? )は何にすればいいか?取得したい検索結果は配列です。ファンクション戻り値を連想配列にすることは可能ですか?ちょっと困っています。 $sql = "SELECT * FROM file_tbl WHERE"; // A だけの場合 if ( $b == "" and $c == "" and $d=="" and $e==""){ $sql = $sql." a='%s' order by b DESC,a"; $query = sprintf("$sql", mysql_real_escape_string($a)); // B だけの場合 }else if( $a == "" and $c == "" and $d=="" and $e==""){ $sql = $sql." b >='%s' order by b DESC,a"; $query = sprintf("$sql", mysql_real_escape_string($b)); // Cだけの場合 }else if( $a == "" and $b == "" and $d=="" and $e==""){ $sql = $sql." c <='%s' order by b DESC,a"; . . . // SQL クエリを実行する $result = mysql_query($query); よろしくご教授願います。

    • ベストアンサー
    • MySQL
  • SQLの書き方

    select A.NO, A.NAME, count(B.TEN) FROM T1 A, T2 B GROUP BY A.NO ORDER BY 3 DESC 結果として以下のようになってほしいのですが、どのようにSQLを書けばよいのでしょうか? 結果 NO | NAME | TEN ---+------+----- 3 + 上村 + 40 1 + 吉田 + 11 2 + 浅野 + 6 T1テーブル NO | NAME ---+-------- 1 + 吉田 2 + 浅野 3 + 上村 T2テーブル NO | TEN ---+-------- 1 + 10 2 + 5 3 + 0 1 + 1 2 + 1 3 + 40

  • 1列について重複行を除いて全列をSELECTするSQL文

    A B C 1 2 10-01 2 3 10-01 3 2 10-02 4 1 10-03 5 3 10-04 MYSQLで上のようなTABLEから、B列についてCが最新の日付の行を1行ずつ、且つ全列抽出したいです。想定する結果は下記の通りです。 3 2 10-02 4 1 10-03 5 3 10-04 SELECT DISTINCT A FROM table_name ORDER BY C DESC だとB,C列は抽出されず、DIATINCT A,B,Cだと全行抽出されてしまう。 GROUP BY B は平均や集計なら使えるでしょうが最新の1行でないし。 どんなSQL文にすれば良いのでしょうか。よろしくお願いします

    • ベストアンサー
    • MySQL
  • SQL ORDER BYにおける条件について

    SQLのORDER BY句について質問です。 項目A,B,Cがあり、  項目AがNULLの場合   → ORDER BY 項目B,項目C  項目AがNULL以外の場合 → ORDER BY 項目A,項目C としたいのですが、どう指定すればいいでしょうか? 色々と調べたところ、CASE文を使用する?のかなと思って いるのですが、具体的には回答を得ていません。 お手数ですが、ご回答宜しくお願い致します。 ※使用DBはOracle10です。

  • T-SQL Ordery Byの使い方

    Order By の使い方について教えてください。 (初心者です) 下のような順番で結果を求めています。 Item NO QTY P001     10 P002      8 P003     20 N001     13 N002     50 Q001     5 Q002    33 Q003     6 Table内のItemNOはA001から alphabetの順番でZ005まであるものとして、上記のP,N,QのItemNoのものだけをこの順番で求めたいのです。 もちろん、WHERE-clauseにはこの8件のItemNOの指定はしてあります。 Order by left(ItemNO, 1) DESC (またはASCE), substring(ItemNo, 2,4) ASC これでは、P,N,Qの順番にはなりません。 最初にP Number、次にN Number、最後にQ Numberを出すにはどうしたらいいのでしょうか。 Order Byの次に8個のItemNOを上記の順番に書いて指定することはできるのでしょうか。 Order Byには "Case When" が使えるとあるinternetで見たのですが、もし使えるとしたらこの順番をだすのに使えるのでしょうか。 ご指導お願いいたします。

  • MSQLにおいての並び替えについて

    MySQLについての質問です。 MySQLのバージョンは4.1.20です。 テーブル +----+-------+-------+ | id | A | B | +----+-------+-------+ | 1 | 80223 | 80505 | | 2 | 80223 | 81017 | | 3 | 80410 | 0 | | 4 | 80110 | 80731 | | 5 | 80223 | 0 | | 6 | 80223 | 81223 | | 7 | 80410 | 80510 | | 8 | 80110 | 80630 | +----+-------+-------+ 並び替え後 +----+-------+-------+ | id | A | B | +----+-------+-------+ | 3 | 80410 | 0 | | 7 | 80410 | 80510 | | 5 | 80223 | 0 | | 6 | 80223 | 81223 | | 2 | 80223 | 81017 | | 1 | 80223 | 80505 | | 4 | 80110 | 80731 | | 8 | 80110 | 80630 | +----+-------+-------+ idはプライマリーキーです。 A、B共に数値(int)です。 Aには「0」という値は入りません。Bには「0」が入る可能性があります。 並び替えの条件としては 1.A 降順 2.B 0 3.B 降順 4.id 昇順 です。 イメージとしては SELECT * FROM `hoge_table` ORDER BY `A` DESC , `B` = 0 , `B` DESC , `id` ASC なのですが、結果としては、 +----+-------+-------+ | id | A | B | +----+-------+-------+ | 7 | 80410 | 80510 | | 3 | 80410 | 0 | | 6 | 80223 | 81223 | | 2 | 80223 | 81017 | | 1 | 80223 | 80505 | | 5 | 80223 | 0 | | 4 | 80110 | 80731 | | 8 | 80110 | 80630 | +----+-------+-------+ という風に並んでしまいます。 よろしくお願い致します。

    • ベストアンサー
    • MySQL
  • SQLiteManagerでOrder by DESCが使えない

    Webベース型のSQLite管理ソフトを使おうとしているのですが、 なぜか Order by " " Descを打ちこんでも、 Order by " " Asc として認識されます。 ネットで検索しても類似例は見つからなくて、困っています。 なにか解決策ご存じの方はいませんか?

  • SQL count 別名を条件に使用

    いつもお世話になっております。 標題についてご教授頂きたく質問させて頂きました。 [SQL} select A, B, count(*) as cnt from product where A=1 and cnt > 2 group by A order by cnt desc とこのようにSQLを記述して実行したのですが、 cnt>2でエラーが出ます。 order by には count の別名を使用できるのですが、 where句やHAVINGでは使えません。 この場合 cont(*)>2 またはcount(項目名)>2 としなければならないのでしょうか