【发布时间】:2021-06-04 02:17:30
【问题描述】:
我是 mysql 新手,我正在尝试编写一个子查询,在其中我可以找到创建日期最早的玩家及其电话号码。我坚持让子查询工作,因为错误'无效使用组功能'不断显示。我做错了什么?
选择用户名、电话号码 FROM 电话号码 WHERE 用户名 =(选择用户名 从播放器 WHERE MIN(creationDateTime));
【问题讨论】:
我是 mysql 新手,我正在尝试编写一个子查询,在其中我可以找到创建日期最早的玩家及其电话号码。我坚持让子查询工作,因为错误'无效使用组功能'不断显示。我做错了什么?
选择用户名、电话号码 FROM 电话号码 WHERE 用户名 =(选择用户名 从播放器 WHERE MIN(creationDateTime));
【问题讨论】:
如果您想使用子查询,请获取具有最小创建日期的用户。然后使用此用户名获取电话号码。您可以使用以下查询。我假设这将是您提到的只有一个具有最小创建日期的用户。
SELECT username, phoneNumber
FROM phonenumber
where username =
(
select username from player
where creationDateTime =
(
SELECT min(creationDateTime) from player
)
)
还有比子查询更好的选择。
【讨论】:
SELECT PN.username, PN.phoneNumber, PL.min_creationDateTime FROM phonenumber AS PN
LEFT JOIN (SELECT username, MIN(creationDateTime) AS min_creationDateTime FROM player GROUP BY username) AS PL
ON PN.username = A.username
它应该会给你想要的结果。
【讨论】:
如果你想要一个玩家,我建议order by 和limit:
SELECT pn.username, pn.phoneNumber
FROM phonenumber pn
WHERE pn.username = (SELECT p.username
FROM player p
ORDER BY creationDateTime
LIMIT 1
);
【讨论】: