2013-04-25 81 views
3

我有一個奇怪的案例構建MySql查詢:SQL查詢中的奇怪邏輯

這是它。

  1. 我需要梳理基礎上FIRST_NAME結果和last_name
  2. 我預期的結果是爲了使用CONCAT(名字,姓氏)的

,但我只限於不要在使用CONCAT ORDER BY。有沒有一種辦法可以構建查詢

RAW SQL:

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

案例:FIRST_NAME可以爲空

 
First Name   Last Name 
A     B 
        B 
C     D 

現在我需要的排序順序爲

 
AB 
B 
CD 
+1

'SELECT CONCAT(first_name,last_name)FROM users ORDER BY 1'? – 2013-04-25 14:07:31

回答

0

if t他是空白NULL,用COALESCE

ORDER BY CONCAT(COALESCE(first_name,''), COALESCE(last_name,'')) 
0

如何:

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

那麼嚴肅,你可以使用concat_ws()。 。 。就像concat()但不同。

1

試試這個:

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

在MySQL中,你可以通過列別名排序:

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

SQLFiddle here