3

MySql Query を構築する奇妙なケースがあります。

ここにあります。

  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
                     B
CD

今、私はSOrt Orderが必要です

AB
B
CD
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

これはどう:

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

空白が の場合NULL、使用COALESCE

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

MySQL では、カラム エイリアスでソートできます。

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

ここでSQLFiddle 。

于 2013-04-25T14:15:26.170 に答える