SQL查询中的奇怪逻辑
问题描述:
我有一个奇怪的案例构建MySql查询:SQL查询中的奇怪逻辑
这是它。
- 我需要梳理基础上FIRST_NAME结果和last_name
- 我预期的结果是为了使用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
答
if t他是空白NULL
,用COALESCE
ORDER BY CONCAT(COALESCE(first_name,''), COALESCE(last_name,''))
答
如何:
order by (case when FirstName is NULL or FirstName = '' then LastName else FirstName end),
LastName
那么严肃,你可以使用concat_ws()
。 。 。就像concat()
但不同。
答
试试这个:
SELECT full_name FROM (
SELECT CONCAT(first_name, last_name) AS full_name FROM users
) AS tmp ORDER BY full_name
答
在MySQL中,你可以通过列别名排序:
SELECT CONCAT(first_name, last_name) AS full_name
FROM users ORDER BY full_name
SQLFiddle here。
'SELECT CONCAT(first_name,last_name)FROM users ORDER BY 1'? – 2013-04-25 14:07:31