如何使用 PHP PDO 按字符串的最后一个字排序 MySQL 查询?
How to order a MySQL query by last word of string with PHP PDO?
我的数据库 table 中有一列名为“name”,它将用户名存储为“FirstName LastName”。我想查询 return 按姓氏字母顺序排列的成员。
$sql = 'SELECT * FROM members ORDER BY name';
$stmt = $pdo->prepare($sql);
$stmt->execute();
$members = $stmt->fetchAll(PDO::FETCH_ASSOC);
这不起作用,因为结果是按全名字段而不是姓氏排序的。我该如何解决这个问题?
谢谢。
您可以使用 SUBSTRING_INDEX
:
来订购
SELECT *
FROM members
ORDER BY SUBSTRING_INDEX(name, ' ', -1);
顺便说一句,将名字和姓氏存储在同一列中通常是不好的 table 设计。名字和姓氏有两个单独的列会好得多。
我的数据库 table 中有一列名为“name”,它将用户名存储为“FirstName LastName”。我想查询 return 按姓氏字母顺序排列的成员。
$sql = 'SELECT * FROM members ORDER BY name';
$stmt = $pdo->prepare($sql);
$stmt->execute();
$members = $stmt->fetchAll(PDO::FETCH_ASSOC);
这不起作用,因为结果是按全名字段而不是姓氏排序的。我该如何解决这个问题?
谢谢。
您可以使用 SUBSTRING_INDEX
:
SELECT *
FROM members
ORDER BY SUBSTRING_INDEX(name, ' ', -1);
顺便说一句,将名字和姓氏存储在同一列中通常是不好的 table 设计。名字和姓氏有两个单独的列会好得多。