我有一个不寻常的 SQL 表(不是我的),其中包含以下字段(以及其他字段): last_name, primary_name, secondary_name
,表示已婚夫妇。假定姓氏是共享的(我知道这不是很现代),如果不是一对,那么primary_name
orsecondary_name
可能是 NULL。(该表也有几个重复项。)
我想要做的是获取数据库中所有名称(“first last”)的列表,以通常的方式按字母顺序排列。现在我正在使用 PHP 和 PDO 对数据库进行两次传递:
$qstr = "SELECT DISTINCT primary_name, last_name
FROM members
WHERE primary_name IS NOT null
ORDER BY last_name, primary_name";
$sth = $dbh->prepare($qstr);
$sth->execute();
// output the results
$qstr = "SELECT DISTINCT secondary_name, last_name
FROM members
WHERE secondary_name IS NOT null
ORDER BY last_name, secondary_name";
$sth = $dbh->prepare($qstr);
$sth->execute();
// output the new results
但最终结果没有按字母顺序排列,因为第二遍重新开始。
我怎样才能一次得到所有的名字,完全按字母顺序排列?有没有办法在 SQL 中做到这一点,或者我是否需要构建两个数组并在 PHP 中重新对它们进行字母排序?
编辑 数据库看起来像这样:
last_name primary_name secondary_name
----------------------------------------
Abrams Joe Susan
Miller Sam Abby
所需的输出将是这样的:
["Joe Abrams","Susan Abrams","Abby Miller","Sam Miller"]
相反,如果第一遍得到所有丈夫,第二遍得到所有妻子,我会得到这样的结果:
["Joe Abrams","Sam Miller","Susan Abrams","Abby Miller"]