SQLite,ORDER BY名称,如果组不存在

时间:2013-09-21 19:47:43

标签: sqlite sql-order-by

我正在尝试按字母顺序排序列表,除非该行有一个组,然后我想要使用该组。 grouped也可以是NULL或空字符串。

例如:

name      grouped
a         NULL
b         
c         a 
d         

将被命令为:

a,c,b,d

这就是我所拥有的

SELECT name FROM table ORDER BY COALESCE(grouped, name)

我也试过了:

SELECT name FROM table ORDER BY CASE WHEN LENGTH(grouped) = 0 
THEN name ELSE grouped END

但是这些解决方案都没有正常工作,他们最终会首先显示所有分组的项目,而不是像我期望的那样与名称混合。

2 个答案:

答案 0 :(得分:1)

由于您混合使用null和空字符串,请执行以下操作:

SELECT name 
FROM table 
ORDER BY COALESCE(grouped, '') || name;

这会将空值更改为空字符串,将空字符串保留为空字符串,并连接名称。

答案 1 :(得分:1)

SELECT *
FROM MyTable
ORDER BY CASE COALESCE(grouped, '')
         WHEN '' THEN name
                 ELSE grouped
         END,
         COALESCE(grouped, '') <> ''