You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL如何查询拒绝最多活动邀约好友并处理并列创建合规视图

解决方案

方案1:兼容MySQL 5.x版本(无用户变量,可直接封装为视图)

直接将最小邀约数的计算逻辑作为内联子查询嵌入筛选条件,不需要依赖用户变量,符合MySQL视图的创建要求:

DROP VIEW IF EXISTS troublemaker;
CREATE VIEW troublemaker AS
SELECT DISTINCT f.FIRST_NAME, f.LAST_NAME
FROM FRIEND f
INNER JOIN PROPOSES p ON f.FRIEND_ID = p.FRIEND_ID
GROUP BY f.FRIEND_ID, f.FIRST_NAME, f.LAST_NAME
HAVING COUNT(*) = (
    SELECT MIN(cnt) 
    FROM (
        SELECT COUNT(*) cnt 
        FROM PROPOSES 
        GROUP BY FRIEND_ID
    ) t
)
ORDER BY f.FRIEND_ID ASC;

方案2:MySQL 8.0+版本(窗口函数实现,性能更优)

如果你的MySQL版本为8.0及以上,使用RANK()窗口函数实现逻辑更简洁,查询效率更高:

DROP VIEW IF EXISTS troublemaker;
CREATE VIEW troublemaker AS
SELECT FIRST_NAME, LAST_NAME
FROM (
    SELECT 
        f.FIRST_NAME, 
        f.LAST_NAME,
        f.FRIEND_ID,
        RANK() OVER(ORDER BY COUNT(*) ASC) AS rk
    FROM FRIEND f
    INNER JOIN PROPOSES p ON f.FRIEND_ID = p.FRIEND_ID
    GROUP BY f.FRIEND_ID, f.FIRST_NAME, f.LAST_NAME
) t
WHERE rk = 1
ORDER BY FRIEND_ID ASC;

以上两种方案均无需使用用户变量,完全符合MySQL视图的创建规范,且能正确返回所有并列符合条件的好友

内容的提问来源于stack exchange,提问作者Vico Lays

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 00:15:06