3

我有一个奇怪的案例构建 MySql 查询:

这里是。

  1. 我需要根据 first_name 和 last_name 对结果进行排序
  2. 我的预期结果是在 ORDER BY 中使用 CONCAT(first_name, last_name)

但我仅限于在 ORDER BY 中不使用 CONCAT。有没有办法可以构建查询

原始 SQL:

SELECT CONCAT(first_name, last_name) 
FROM users 
ORDER BY CONCAT(first_name, last_name)

案例:first_name 可以为空

例子

名字 姓氏
AB
                     乙
光盘

现在我需要排序顺序

AB
乙
光盘
4

4 回答 4

1

尝试这个:

SELECT full_name FROM (
    SELECT CONCAT(first_name, last_name) AS full_name FROM users
) AS tmp ORDER BY full_name
于 2013-04-25T14:10:06.930 回答
0

如果空白是NULL,请使用COALESCE

ORDER BY CONCAT(COALESCE(first_name,''), COALESCE(last_name,''))
于 2013-04-25T14:07:49.860 回答
0

这个怎么样:

order by (case when FirstName is NULL or FirstName = '' then LastName else FirstName end),
         LastName

不太严重,您可以使用concat_ws(). . . 就像concat()但不同。

于 2013-04-25T14:09:58.883 回答
0

在 MySQL 中,您可以按列别名排序:

SELECT CONCAT(first_name, last_name) AS full_name 
FROM users ORDER BY full_name

SQLFiddle在这里

于 2013-04-25T14:15:26.170 回答