gpt4 book ai didi

MySQL - 基于不同表中的 TOP 5 返回值

转载 作者:行者123 更新时间:2023-11-29 16:03:45 25 4
gpt4 key购买 nike

尝试构建动态链接,其中其他表中的 TOP 5 将驱动结果(下面的示例基于 Top 1 以减少代码长度)。 主要问题是我无法使用 LIMIT 命令。我有这张表

CREATE TABLE work1
(
wo int (5),
duration int (5));

insert into work1 values
( 1 ,30),
( 2 ,45),
( 3 ,30),
( 4 ,40),
( 5 ,60),
( 6 ,80),
( 7 ,11);

还有这个

CREATE TABLE part1
(
part VARCHAR (5),
wo int (5));

insert into part1 values
("A" ,1),
('A' ,2),
('A' ,3),
('A' ,4),
('A' ,5),
('B' ,6),
('B' ,7),
('C' ,8),
('C' ,9),
('D' ,10);

我的结果基本上是第 1 部分中的前 1 个计数(部分),以及工作 1 表中的 wo 和持续时间。

在这种情况下,A 部分位于顶部,计数为 5,我所追求的结果如下:

wo  part    duration
1 A 30
2 A 45
3 A 30
4 A 40
5 A 60

最佳答案

这旨在回答针对(“完整”)MySQL 的原始问题。

<小时/>

聚合 part1 以获取每个 part 的计数,并使用 LIMIT 按该计数降序排列前 1 个。然后将两个表连接到该派生表。

SELECT w1.wo,
p2.part,
w1.duration
FROM (SELECT p1.part
FROM part1 p1
GROUP BY p1.part
ORDER BY count(*) DESC
LIMIT 1) x
INNER JOIN part1 p2
ON p2.part = x.part
INNER JOIN work1 w1
ON w1.wo = p2.wo;

db<>fiddle

要从前 1 名更改为前 5 名,请将 LIMIT 1 更改为 LIMIT 5

关于MySQL - 基于不同表中的 TOP 5 返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55937767/

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