作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要检索按字母顺序排列的所有记录。 除了预定义的记录列列表,它们的记录应按给定的预定义顺序首先出现,然后所有其他记录应基于同一列按字母顺序排序
例如,假设我们有下表,名为 Names
假设预定义列表是("Mathew", "Ashraf", "Jack")
。
即这些是他们的记录应该按照预定义顺序首先列出的人的名字。
所以想要的查询结果应该是:
哪个查询可以检索此自定义订单?
附言,我正在使用 MySQL。
这是我根据评论要求进行的试用:
(SELECT * FROM Names WHERE Name in ('Mathew', 'Ashraf', 'Jack'))
UNION
(SELECT * FROM Names WHERE Name NOT IN ('Mathew', 'Ashraf', 'Jack') ORDER BY Name ASC);
第一个查询结果没有按要求排序。
最佳答案
DROP TABLE IF EXISTS my_table;
CREATE TABLE my_table
(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
,name VARCHAR(12) NOT NULL UNIQUE
);
INSERT INTO my_table (name) VALUES
('Sam'),
('John'),
('Samanta'),
('Johny'),
('Ashraf'),
('Tom'),
('Jack'),
('Mathew'),
('Hans'),
('Adam');
SELECT * FROM my_table ORDER BY FIELD(name,'Jack','Ashraf','Mathew') DESC,name;
+----+---------+
| id | name |
+----+---------+
| 8 | Mathew |
| 5 | Ashraf |
| 7 | Jack |
| 10 | Adam |
| 9 | Hans |
| 2 | John |
| 4 | Johny |
| 1 | Sam |
| 3 | Samanta |
| 6 | Tom |
+----+---------+
您甚至可以为此使用 FIND_IN_SET...
SELECT * FROM my_table ORDER BY FIND_IN_SET(name,'Jack,Ashraf,Mathew') DESC,name;
关于mysql - 查询按 aplhabetic 顺序检索记录,除了必须在顶部的 n 个预定义项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25367396/
我需要检索按字母顺序排列的所有记录。 除了预定义的记录列列表,它们的记录应按给定的预定义顺序首先出现,然后所有其他记录应基于同一列按字母顺序排序 例如,假设我们有下表,名为 Names 假设预定义列表
我是一名优秀的程序员,十分优秀!