Postgres SQL - WHERE 中的 MAX 标准 - 初学者问题

问题描述 投票:0回答:1

我正在学习初级 postgres 在线课程,下面是问题和示例答案。但我想知道是否可以使用 MAX 而不是 ORDER BY DESC?

.

问题

哪个客户的 最高客户 ID 号,其 名称以“E”开头并且 地址 ID 低于 500

建议的答案是:

SELECT first_name,last_name FROM customer

WHERE first_name LIKE 'E%' 

AND address_id <500 

ORDER BY customer_id DESC LIMIT 1;

我尝试了下面的代码,但它什么也没返回。我还错过了什么吗?我对其他类似的查询尝试了相同的概念,并且它有效。我只是不明白为什么这个不起作用。应该有一行受到影响。

 SELECT first_name, last_name, customer_id FROM customer

WHERE first_name LIKE 'E%'

AND address_id < 500

AND customer_id = (SELECT MIN(customer_id) FROM customer)

提前致谢!

postgresql max
1个回答
0
投票

这显然行不通。

想象只有两行

客户 ID 姓名
3 多丽丝
5 伊迪丝

您的主查询仅匹配 ID 5,您的子查询仅匹配 ID 3。

第 3 行和第 5 行不相同 = 没有行符合条件。您无法将过滤条件拆分到两个不相关的查询中。

你需要

select first_name, last_name, customer_id
from customer 
where customer_id = (
  select min(customer_id)
  from customer
  where address_id < 500 and first_name like 'E%'
);

然而你得到的答案已经是最好的解决方案了。

© www.soinside.com 2019 - 2024. All rights reserved.