首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql-基于空值和空值的排序列表作为列中的最后一个

mysql-基于空值和空值的排序列表作为列中的最后一个
EN

Stack Overflow用户
提问于 2016-10-25 08:53:36
回答 3查看 53关注 0票数 0

我有一个用户列表,上面有基本的详细信息id,他们的名字和个人资料照片(链接到照片,实际上)

代码语言:javascript
复制
CREATE TABLE IF NOT EXISTS `users` (
  `id` int(11) NOT NULL,
  `userName` varchar(60) NOT NULL,
  `photo` varchar(50) NULL,
  `status` int(11) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=42 DEFAULT CHARSET=latin1;

INSERT INTO `users` (`id`, `userName`,`photo`, `status`) VALUES
(1, 'John', 'john.png',1),
(2, 'Jane', 'jane.png',1),
(3, 'Ali', '',1),

(6, 'Bruce', 'bruce.png',1),

(7, 'Martha', '',1),
(8, 'Sidney', '',1),
(10, 'Charlie', 'charlie.png',1),

(12, 'Elisa', '',1),
(14, 'Samantha', 'samantha.png',1),
(15, 'Hannah', 'hannah.png',1),

(16, 'Hannah', '',1),
(17, 'Kevin', 'kevin1.png',1),
(18, 'Kevin', 'kevin2.png',1),
(19, 'Ruth', '',1);

并不是所有的用户都有个人资料图片。我想列出这些用户的字母顺序,也显示用户谁有个人资料图片在前面。

这是我写的查询:

代码语言:javascript
复制
select * from users ORDER BY photo DESC ;

它根据照片值对用户进行排序,但它们没有按字母顺序显示。

是否有可能列出这些用户,以便所有拥有照片的用户都会以字母顺序显示在列表中的userName的顶部?

SQL小提琴

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-10-25 09:17:29

你这里有空的紫罗兰。这样你就可以用这个方法了。

代码语言:javascript
复制
SELECT * FROM users ORDER BY if(photo = '' or photo is null,1,0), userName

但是在mysql中,有一个方法可以用(-)命令空值。

代码语言:javascript
复制
SELECT * FROM users ORDER BY -photo DESC, userName ASC

这里,由于DESC顺序,照片列数据顺序为空值。

代码语言:javascript
复制
SELECT * FROM users ORDER BY
CASE WHEN photo IS NULL THEN 1 ELSE 0 END ASC, userName ASC
票数 1
EN

Stack Overflow用户

发布于 2016-10-25 09:09:42

一旦您将''更改为NULL..。

代码语言:javascript
复制
SELECT * FROM users ORDER BY photo IS NULL,username;
票数 2
EN

Stack Overflow用户

发布于 2016-10-25 09:04:29

如果你想要第一个没有照片的人,然后是其他人(按字母顺序对这两个组进行排序):

代码语言:javascript
复制
select * from users ORDER BY photo,userName ASC ;

等待你的反馈,如果这不是你想要的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40235537

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档