gpt4 book ai didi

MYSQL - 在子查询中是否有 LIMIT 的替代方法?

转载 作者:行者123 更新时间:2023-11-29 01:49:36 24 4
gpt4 key购买 nike

我正在使用 MYSQL。我有下面的表格:

create table visit (
id int,
seller_number varchar(10),
date_visit date,
city_visited varchar(50),
status varchar(50)
);

此表的示例数据:

id   seller_number  date_visit    city_visited      status

10 11111 2005-02-12 Goiania/GO Yes
11 11111 2010-05-19 Marilia/SP Sim
12 11111 2015-01-23 Brasilia/DF No
13 22222 2014-01-02 Brasilia/DF Yes
14 22222 2012-10-21 Goiania/GO No
15 33333 2010-08-09 Marilia/SP No

我需要一个SQL只返回每个卖家最新日期的行,像这样:

id   seller_number  date_visit    city_visited      status

12 11111 2015-01-23 Brasilia/DF No
13 22222 2014-01-02 Brasilia/DF Yes
15 33333 2010-08-09 Marilia/SP No

我正在使用子查询执行此操作,但MYSQL 不接受 LIMIT:

SELECT seller_number, date_visit, city_visited, status FROM visit WHERE (seller_number, date_visit) IN (SELECT seller_number, MAX(date_visit) FROM visit GROUP BY seller_number LIMIT 500);

没有 LIMIT 它可以工作,但我需要限制它,因为该表有超过 3000 万个元组并且无法查询。

有没有其他替代方法可以在不在子查询中使用 LIMIT 的情况下获得此结果?

谢谢

最佳答案

您可以使用存在量词和相关子查询而不是显式地选择最大日期:

SELECT
v.seller_number
, v.date_visit
, v.city_visited
, v.status
FROM visit v
WHERE NOT EXISTS (
SELECT *
FROM visit otherVisit
WHERE v.seller_number=otherVisit.seller_number
AND otherVisit.date_visit > v.date_visit
);

关于MYSQL - 在子查询中是否有 LIMIT 的替代方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50109323/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com