我正在使用以下架构(粗体字代表pk,“:”代表引用表):
USERS(用户名,名称,姓氏);
产品(编号,名称,数量);
购买(用户:USERS,产品:PRODUCTS,dateAndTime,购买数量);
我想查找已购买最多商品的用户的姓名和姓氏。
首先,我使用嵌套查询来找出每个用户的购买数量,然后选择购买> =所有这些值的用户:
SELECT name, surname, username
FROM users JOIN purchases ON username = user
GROUP BY name, surname, username
HAVING count(*) >= ALL(
SELECT count(*)
FROM utenti JOIN acquisti ON username = user
GROUP BY username)
是否有另一种无需使用嵌套查询即可实现相同目的的方法?
预先感谢您的宝贵时间。
就在这里。这听起来像是一项家庭作业,但是您似乎已经在其中做了一些工作。想法是按排序,count(*)
并采用第一行。SQL Server,Sybase和Access中的语法为:
SELECT top 1 name, surname, username
FROM users as u INNER JOIN
purchases as p
ON u.username = p.user
GROUP BY name, surname, username
ORDER BY count(*) desc;
其他数据库将limit 1
在后面放置一个子句order by
,而不是top 1
。其他可能具有更多的奥秘语法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句