【发布时间】:2019-05-16 23:33:15
【问题描述】:
我知道问题名称有点令人困惑,但我想做的是(如果可能的话)以下内容:在以下 MYSQL 查询中,我可以从前 15 人中获取所有电话号码,我需要的是使用此查询,如果此人的电话号码超过 3 个,则只返回前 3 个。
SELECT distinct(pp.PhoneNumber)
FROM person p
INNER JOIN personPhone pp ON p.personId = pp.personId
WHERE !ISNULL(pp.PhoneNumber)
GROUP BY p.PersonId, pp.PhoneNumber
ORDER BY p.personId ASC LIMIT 0,15;
我尝试在distinct 语句内对SELECT 进行子查询,但没有任何成功
编辑:对不起,我忘了添加我正在使用的 MySQL 版本,它是 5.7.24
【问题讨论】:
-
什么 MySQL 版本?窗口函数使这种查询更容易(MySQL-8.0/MariaDB-10.2+)
-
为了便于阅读,我会使用
WHERE pp.PhoneNumber IS NOT NULL -
请指定 MySQL 版本:8.x 还是 5.x?
-
DISTINCT不是函数,GROUP BY用于聚合。 -
你如何定义“前三个”? SQL 表表示 无序 集。