按字母顺序获取特定条目之前的所有条目(postgres)

Get all the entries alphabetically preceding a certain entry (postgres)

我正在寻找解决此类问题的方法。 例如,我有一个 table 的客户,我需要让所有按字母顺序(姓名)排在编号为 123 的客户之前的客户。 例如:

ID  name
500 Anny
145 Bob
454 Cindy
789 Dan
123 Eve
400 Fred

我会找 Anny、Bob、Cindy 和 Dan。 我正在使用 postgres。

您可以这样做:

select c.*
from clients c
where c.name < (select c2.name from clients c2 where c2.id = 123)
order by c.name;

我会使用自连接:

SELECT c2.*
FROM   clients c1
JOIN   clients c2 ON c2.name < c1.name
WHERE  c1.id = 123
ORDER  BY c2.name;