6

我有以下内容:

 SELECT * FROM users LEFT JOIN user_info ON users.id=user_info.user_id 
                WHERE 
                    ((user_info.tester != 1) OR (user_info.tester is null)) AND 
                    id in (SELECT explicituser_id FROM user_login WHERE (created < '2012-12-17' OR created >= date_add('2012-12-17', interval 1 day))) AND 
                    id IN (SELECT participte_id FROM roster WHERE roster_id IN (6)) 
                order by 
                    substring_index(users.name, ' ', -1)

我只是想按用户的姓氏进行排序。

但是,虽然它可以按名字排序,但姓氏是错误的。如果用户在他们的名字周围有引号(即“Abigail Martinez”,它将使排序不正确。如果用户只提供一个名字,并且它是一个昵称(即。Juan),那么它也会使其不正确。然后中间有首字母(即 Tiffany S Villa 或 Steve de la Makinov)。不幸的是,这仅使用一列作为全名(users.name)。

任何帮助表示赞赏。谢谢!

4

2 回答 2

8

substring_index(TRIM(users.name), ' ', -1)添加TRIM将删除尾随空格。之后,按预期进行排序。

于 2012-12-17T18:49:45.317 回答
0

如果是这种情况,请尝试获取所有行,然后可以尝试使用 mysql_real_escape_string。这样你就不会得到报价。会是这样的。

 $row['new_name'] = mysql_real_escape_string($row['name']);

我不太确定性能是否明智。

希望这可能会有所帮助

于 2012-12-17T18:03:28.123 回答