sql - postgresql - 具有多个表的列的分页/排序
问题描述
按 2 个表中的列进行分页和排序。
- 客户(ID,名字,姓氏)
- 客户电子邮件(客户 ID,类型,电子邮件)。
一位客户可能有多封电子邮件。
要求:获得 10 个客户并按姓氏、电子邮件排序。
--Sort by customer.last_name, customer_email.email
select c.*, ce.email
from customer c
inner join (select distinct c.id, c.last_name
from customer c, customer_email ce
where c.id = ce.customer_id
order by c.last_name, ce.email offset 0 limit 10
) AS paged_c on paged_c.id = c.id
inner join customer_email ce on c.id = ce.customer_id
order by c.last_name, ce.email;
不适用于错误
ERROR: for SELECT DISTINCT, ORDER BY expressions must appear in select list
LINE 6: order by c.last_name, ce.email offset 0 limi...
^
解决方案
PostgreSQL 抱怨您的查询是正确的;你的要求不清楚。
如果您想要前 10 位客户,按姓氏订购一封电子邮件,但每个客户可以有多个电子邮件地址,您如何做到这一点?哪个电子邮件地址用于对客户进行分类?
错误消息基本上反映了这种不确定性。
提出排序顺序的明确定义并将其转换为 SQL,然后 PostgreSQL 将很乐意运行您的查询。
推荐阅读
- javascript - IndexedDB getAll 转换为 Blob 和 ArrayBuffer 然后恢复
- angular - Web API 2:返回带有“application/octet-stream”的二进制文件不适用于 IIS 服务器:IIS/10.0 但适用于 IIS/8.5
- oauth-2.0 - 使用访问令牌在联合中的两个身份提供者之间获取授权码
- android - 如何在 React Native 应用程序中保护捕获或下载的媒体文件
- docker - 激活器清理编译阶段未在 docker 中完成
- python - AWS Lambda:使用容器映像但仍然找不到程序路径
- javascript - 带有内联芯片和文本的自定义输入元素
- python - 为什么我的 Discord 机器人一直收到“错误 1:无效的 appid”,用于回答来自 wolfram alpha 的查询?
- file-upload - 无法发布带有已上传到 Linkedin 的图片的文章
- ruby-on-rails - NoMethodError(nil:NilClass 的未定义方法“上传”):