如何使用 PHP PDO 按字符串的最后一个单词对 MySQL 查询进行排序?

Rob*_*duș 1 php mysql pdo

我的数据库表中有一个名为“name”的列,它将用户名存储为“FirstName LastName”。我希望查询返回按姓氏字母顺序排列的成员。

$sql = 'SELECT * FROM members ORDER BY name';
$stmt = $pdo->prepare($sql);
$stmt->execute();
$members = $stmt->fetchAll(PDO::FETCH_ASSOC);
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为结果是按全名字段排序的,而不仅仅是姓氏。我该如何解决这个问题?

谢谢。

Tim*_*sen 6

您可以使用以下方式订购SUBSTRING_INDEX

SELECT *
FROM members
ORDER BY SUBSTRING_INDEX(name, ' ', -1);
Run Code Online (Sandbox Code Playgroud)

顺便说一句,将名字和姓氏存储在同一列中通常是糟糕的表设计。最好有两个单独的名字列和姓氏列。