我想知道 MySQL 中是否可以通过包含名字和姓氏的名称列对结果进行排序。
示例:
"title" : Albert CATERSON - Barabara ABELS - Chris WASPINK
SQL ..
ORDER BY title
结果将是:
Albert CATERSON - Barabara ABELS - Chris WASPINK
但我想按姓氏对结果进行排序:
ABELS Barabara - CATERSON Albert - WASPINK Chris
你知道是否可以在mysql中做到这一点吗?谢谢。
最佳答案
尝试这样
DROP TABLE IF EXISTS OrderBySurname;
Query OK, 0 rows affected, 1 warning (0.01 sec)
CREATE TABLE OrderBySurname(id INT, title VARCHAR(255));
Query OK, 0 rows affected (0.26 sec)
INSERT INTO `OrderBySurname` (`id`, `title`) VALUES ('1','Albert CATERSON'),('2', 'Barabara ABELS'),('3', 'Chris WASPINK');
Query OK, 3 rows affected (0.01 sec)
Records: 3 Duplicates: 0 Warnings: 0
SELECT title , SUBSTRING_INDEX(title, ' ', -1) AS sur_name FROM OrderBySurname ORDER BY sur_name;
+-----------------+----------+
| title | sur_name |
+-----------------+----------+
| Barabara ABELS | ABELS |
| Albert CATERSON | CATERSON |
| Chris WASPINK | WASPINK |
+-----------------+----------+
3 rows in set (0.00 sec)
SELECT CONCAT(SUBSTRING_INDEX(title, ' ', -1),' ',SUBSTRING_INDEX(title, ' ', 1)) FROM OrderBySurname ORDER BY SUBSTRING_INDEX(title, ' ', -1);
+----------------------------------------------------------------------------+
| CONCAT(SUBSTRING_INDEX(title, ' ', -1),' ',SUBSTRING_INDEX(title, ' ', 1)) |
+----------------------------------------------------------------------------+
| ABELS Barabara |
| CATERSON Albert |
| WASPINK Chris |
+----------------------------------------------------------------------------+
3 rows in set (0.00 sec)
关于mysql - 按包含姓名的字段对结果进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21549318/