【发布时间】:2021-12-25 18:31:12
【问题描述】:
我允许自己写一个关于我现在尝试进行几个小时的查询的线程。我正在尝试获取拒绝建议的活动日期最多的朋友的姓名 (friend.first_name)。
为此,我计算了建议日期和按 ASC 订购的数量。
SELECT COUNT(*) 'NbrProposedDate', f.FIRST_NAME,
f.LAST_NAME, f.FRIEND_ID
FROM PROPOSES
NATURAL JOIN FRIEND f
GROUP BY f.FRIEND_ID
ORDER BY NbrProposedDate ASC
LIMIT 1;
但是,这不考虑 TIES。
我正在寻找的是以下结果:
此外,我看到了一些与 FETCH FIRST 1 ROW WITH TIES 相关的内容,但它似乎不适用于 MySQL(出现 SQL 语法问题)。
最后,我找到了使用函数的替代方法:
-- Find Minimum Count
SELECT MIN(cnt) INTO @min FROM (SELECT COUNT(*) cnt FROM PROPOSES NATURAL JOIN FRIEND f GROUP BY f.FRIEND_ID) t;
-- Show Friends with minimum count
DROP VIEW IF EXISTS troublemaker;
CREATE VIEW troublemaker AS
SELECT FIRST_NAME, LAST_NAME
FROM PROPOSES p
JOIN (SELECT FRIEND.FRIEND_ID
FROM PROPOSES
NATURAL JOIN FRIEND
GROUP BY FRIEND.FRIEND_ID
HAVING COUNT(*) = @min) t
ON p.FRIEND_ID = t.FRIEND_ID
JOIN FRIEND ON t.FRIEND_ID = FRIEND.FRIEND_ID
ORDER BY p.FRIEND_ID ASC;
但是,问题是,我需要把它放到一个视图中,但是“视图的 SELECT 包含一个变量或参数”。
因此,我正在寻找另一种替代方案或解决方案来解决此问题。
附: : 这是一个 MLD :
【问题讨论】:
标签: mysql sql select count mysql-workbench