この質問を受けたのはquestionです。ORDER BYの後に数字
SELECT *
FROM A
WHERE x='abc'
OR y=0
order by case when x='abc' then 0 else 1 end;
このクエリはおそらく、X = 'ABC' の場合の優先順位を決定します。しかし、私は本当になぜこれが起こっている混乱している? ORDER BYの後に列名または列番号が続きますか?また、私はORDER BYの構文について研究しましたが、これについては何も教えていません。また、私はこのような何かをしようとしたが、それは言う:「BY項が範囲外第一ORDER - 1と1の間でなければなりません」:だから
SELECT A
FROM B
ORDER BY 2
、誰でも良いドキュメントには、このクエリまたは少なくともポイントを説明することができますか?どうもありがとうございました。
通常の注文と組み合わせることはできますか?また、なぜこのような優れた機能が適切に文書化されていないのでしょうか? –
これは標準的なSQLではないので、順序を欺く方法です。もちろん、これは有効な次の順序です: 'x = 'abc' THEN 0 else 1 END、x DESC、y ASC .... Another_case_if_you_want' @SidGo – sagi
@SidGo - ***は***です。 https://www.sqlite.org/lang_select.html 'The ORDER BY Clause'の中では、ORBER BYの式が'定数の整数 'であれば位置指定*のみ*が機能すると述べています*(関数、フィールド、式ではありません、またはCASEステートメント)*。 – MatBailie