gpt4 book ai didi

MYSQL 限制特定列值的出现次数

转载 作者:可可西里 更新时间:2023-11-01 08:07:49 26 4
gpt4 key购买 nike

从数据库中提取一些优惠券。每张优惠券都有一个 merchantid 列,其中包含优惠券所属商家的 ID。

我正在尝试构建一个提取 5 张优惠券的查询,但我只需要每个 merchantid 一张优惠券。我不想要多个具有相同 merchantid 的优惠券。

最佳答案

你可以使用

SELECT * FROM coupons GROUP BY merchantid LIMIT 0,5;

而且它起作用,因为

MySQL extends the use of GROUP BY so that the select list can refer to nonaggregated columns not named in the GROUP BY clause (see docs)

如果你不想让MySQL决定保留哪个merchantid,你可以添加你的条件(在下面的示例中 - 让商家获得最高点击次数)使用子查询:

已修复:

SELECT c1.* 
FROM coupons c1 JOIN (
SELECT t.merchantid, MAX(t.numberofclicks) maxnumberofclicks
FROM coupons t GROUP BY t.merchantid
) c2 ON c1.merchantid = c2.merchantid AND c1.numberofclicks = c2.maxnumberofclicks
LIMIT 0,5;

还有一种(更简洁,在大型数据集上可能更快)给猫剥皮的方法:

SELECT c1.*
FROM coupons c1 JOIN coupons c2 ON c1.merchantid = c2.merchantid
GROUP BY c1.merchantid, c1.numberofclicks
HAVING c1.numberofclicks = MAX(c2.numberofclicks)
LIMIT 0,5;

如果您想要 5 张总点击次数最高的优惠券,请在 LIMIT 0,5 之前添加 ORDER BY c1.numberofclicks DESC

关于MYSQL 限制特定列值的出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6656316/

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