gpt4 book ai didi

MYSQL 使用 where 条件限制特定列值的出现次数

转载 作者:行者123 更新时间:2023-11-29 00:54:43 28 4
gpt4 key购买 nike

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

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

我也有一些 WHERE 条件需要放入其中。这是我到目前为止所拥有的,它只为每个商家提取 1 张优惠券,但是它提取的优惠券没有获得最高的点击次数:

SELECT C.couponid,C.fmtc_couponid,C.merchantid,
C.label,C.restrictions,C.coupon,C.link,
C‌.image,C.expire,C.unknown,C.clicks,M.name,
M.approved,M.homepageurl,M.logo_image,M‌.permalink
FROM tblCoupons C,tblMerchants M
WHERE C.merchantid=M.merchantid AND
C.begin < ".mktime()." AND
C.expire > ".mktime()." AND
M.display='1'
GROUP BY C.merchantid ORDER BY C.clicks DESC LIMIT 0,5

最佳答案

我觉得你需要的是从优惠券表中预查询,按商户分组,然后重新加入回来。

select 
PreQuery.merchantID,
C2.couponid,
C2.fmtc_couponid,
C2.merchantid,
C2.label,
C2.restrictions,
C2.coupon,
C2.link,
C‌2.image,
C2.expire,
C2.unknown,
C2.clicks,
M.name,
M.approved,
M.homepageurl,
M.logo_image,
M‌.permalink
from
( select c.merchantid,
max( c.clicks ) as HiClickCoupon
from
tblCoupons c
join tblMerchants M1
on PreQuery.MerchantID = M1.MerchantID
AND M1.DIsplay = '1'
where
c.begin < ".mktime()."
and c.expire > ".mktime()."
group by
c.merchantid
order by
max( c.Clicks ) DESC
limit
0, 5 ) PreQuery

join tblMerchants M
on PreQuery.MerchantID = M.MerchantID

join tblCoupons C2
on PreQuery.MerchantID = C2.MerchantID
AND PreQuery.HiClickCoupon = C2.Clicks
AND C2.begin < ".mktime()."
AND C2.expire > ".mktime()."

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

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