sql - Postgresql - WHERE 中的 MAX 标准 - 初学者问题

标签 sql postgresql sql-limit

我正在学习 postgres 初学者在线类(class),下面是问题和示例答案。但我想知道是否可以使用 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 MAX(customer_id) FROM customer)

提前致谢! 编辑1:我在尝试中写了MIN。应该是MAX吧,反正我改了,还是什么都没有。

编辑2:下面我添加了“类似查询”的详细信息。

下面的代码有效,它基本上返回所有评级为 R 或 NC-17、长度超过 55、租金最便宜(最低)的电影。

SELECT title, length, rating, rental_rate FROM film
WHERE rating IN('R','NC-17')
AND length <=55 
AND rental_rate = (SELECT MIN(rental_rate) FROM film)

编辑3: 所以我想,我上面的代码可以工作,所以它应该可以解决查找 MAX customer_id 的新查询。 这应该很简单。我真的很想知道为什么我的 MAX 代码不起作用。请帮助我。

假设有 3 行数据需要分析,见下文。

CREATE TABLE customer (
first_name VARCHAR(50),
last_name VARCHAR(50),
address_id INT,
customer_id INT
)

INSERT INTO customer (first_name, last_name,address_id,customer_id )
VALUES 
(Eddie, Longbottom, 501, 100),
(Freddie, Longbottom, 501, 101),
(Ellie, Longbottom, 502,99);

应该返回答案

Eddie Longbottom 501 100.

但我只是想使用 MAX 而不是 ORDER BY customer_id DESC。

请帮忙..! TYSM

最佳答案

这显然行不通(除非您展示,否则我们不知道什么是“相似”查询)。

想象只有两行

<表类=“s-表”> <标题> customer_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%'
);

但是,您得到的答案是更好的解决方案。

关于sql - Postgresql - WHERE 中的 MAX 标准 - 初学者问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77072176/

相关文章:

node.js - Mac 上的 Node/Deno Postgres 客户端速度缓慢

mysql:顺序 ->限制 ->总和...可能吗?

php - 在应用 LIMIT 之前获取结果计数的最佳方法

sql - 这条SQL语句中的 'vw'是什么意思?

python - 无法访问 postgresql 表

sql - 选择多行共有的最大日期

php - SELECT ... LIMIT 0,1 语法错误

php - mysql 查询不起作用

sql - 获取每个组的下一个最小值,大于或等于给定值

sql - 索引跳过扫描仿真以检索不同的产品 ID 和附加列的最小值/最大值