我正在做一个基本的SQL select查询,它返回一组结果。我想要一个特定的行,其中的条目是"费"把它放在结果的顶部,然后是其余部分。
类似的东西:
SELECT * FROM tbl ORDER By Charges = Fee DESC, Charges DESC
有人可以帮忙吗?
答案 0 :(得分:1)
你可以试试这个:
SELECT * from tbl ORDER BY CASE WHEN Charges = 'Fee' THEN 0 ELSE 1 END, Charges DESC;
答案 1 :(得分:0)
我认为你有一个使用UNION查询。据我所知,ORDER BY默认不支持此类事情。
这样的事情:
SELECT * FROM tbl WHERE Charges = 'Fee'
UNION
SELECT * FROM tbl ORDER BY Charges DESC
答案 2 :(得分:0)
您必须使用ORDER BY
FIELD
属性,然后按首先排序。
由于我没有您的表格定义,我在这里抛出一个http://sqlfiddle.com/#!9/91376/13
为了消失,脚本几乎包括;
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
答案 3 :(得分:0)
SELECT * FROM tbl ORDER By FIELD(Charges, 'Fee') DESC
您可以使用类似上面的内容。其中Charges
是字段,fee
是特定值。这样一来,您就可以保持简单。