假设有两张表,一张保存用户信息,一张保存某种类型的用户记录,例如收据。用户和收据之间存在一对多的关系。
检索用户(按最大收据数量排序)的最佳 SQL 方法是什么?
我能想到的最好方法是使用 join 和 count(?) 返回用户数组及其相关收据数量。
在这种情况下有没有办法使用 count 函数?
select * from `users` inner join `receipts` on `users`.`id` = `receipts`.`uId`
如果 OP 希望使用来自的数据包含附加信息(附加聚合等...)users
table:
SELECT `users`.`id`,
count(`receipts`.`uId`)
FROM `users`
INNER JOIN `receipts` ON `users`.`id` = `receipts`.`uId`
GROUP BY `users`.`id`
ORDER BY count(`receipts`.`uId`) DESC
否则,只有receipts
需要表...
SELECT `users`.`id`,
count(`receipts`.`uId`)
FROM `receipts`
GROUP BY `receipts`.`uId`
ORDER BY count(`receipts`.`uId`) DESC
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)