私は、一連の結果を返す基本的なSQL選択クエリを実行しています。私はエントリ "料金"の結果の上に置かれる特定の行、その後、残りのしたい。以下のようなMySQLは、結果の先頭に特定の行を入れます。
何か:
SELECT * FROM tbl ORDER By Charges = Fee DESC, Charges DESC
は誰が助けることはできますか?
私は、一連の結果を返す基本的なSQL選択クエリを実行しています。私はエントリ "料金"の結果の上に置かれる特定の行、その後、残りのしたい。以下のようなMySQLは、結果の先頭に特定の行を入れます。
何か:
SELECT * FROM tbl ORDER By Charges = Fee DESC, Charges DESC
は誰が助けることはできますか?
:
SELECT * from tbl ORDER BY CASE WHEN Charges = 'Fee' THEN 0 ELSE 1 END, Charges DESC;
UNIONクエリを使用すると思います。 ORDER BYは、私が知る限り、この種のものをデフォルトでサポートしていません。
このような何か:あなたはこの試みることができる
SELECT * FROM tbl WHERE Charges = 'Fee'
UNION
SELECT * FROM tbl ORDER BY Charges DESC
をあなたは、最初の者によって注文うFIELD
属性、とORDER BY
を使用しなければならないでしょう。
私はあなたのテーブル定義を持っていないので、私はそれが消えるのために、ここで一緒にhttp://sqlfiddle.com/#!9/91376/13
を1を投げてい、スクリプトはかなりで構成されています。
CREATE TABLE IF NOT EXISTS `tbl` (
`id` int(6) unsigned AUTO_INCREMENT,
`Name` char(6) not null,
`Charges` char(10) NOT NULL,
PRIMARY KEY (`id`)
) DEFAULT CHARSET=utf8;
INSERT INTO `tbl` (`Name`, `Charges`)
VALUES ('One', 'Fee'), ('Two', 'Charge'), ('Three', 'Charge'),
('Four', 'Charge'), ('Five', 'Fee'), ('Six', 'Fee'),
('Seven', 'Invoice'), ('Eight', 'Fee'), ('Nine', 'Invoice'),
('Ten', 'Invoice');
SELECT *
FROM tbl
ORDER BY FIELD(`Charges`, 'Charge') DESC
;
返す:だから
id Name Charges
2 Two Charge
3 Three Charge
4 Four Charge
1 One Fee
9 Nine Invoice
8 Eight Fee
7 Seven Invoice
6 Six Fee
5 Five Fee
10 Ten Invoice
、直接あなたの質問に答えるために、あなたのクエリは次のようになります。
SELECT *
FROM tbl
ORDER BY FIELD(Charges, 'Fee') DESC
編集:ここCharges = Fee
によって並べ替え表示可能、:http://sqlfiddle.com/#!9/91376/15
としては、答えとして例示して説明: 'FIELD(有料、 '手数料')でTBLのORDER SELECT * FROM DESC' – MrMarlow