我有两个表:tbl_users和tbl_users_jobs。
tbl_users作为使用信息 tbl_users_jobs作为与该用户相关的作业。
假设我有3个用户:id 1,2和3。
用户1有2个作业,用户3有3个作业,用户2只有1个作业。 我想向工作较少的用户插入一份新工作(所以我可以将工作分配给所有用户)。
我该怎么做? 需要考虑一件事: 例如,用户可以从今天开始,没有工作......
这是表结构:
tbl_user
-------
Id
name
-
tbl_users_jobs
-------
Id
user_id
description
感谢。
答案 0 :(得分:1)
您可以使用LEFT JOIN
计算每位用户的工作(包括没有工作的新用户)。
诀窍是指望tbl_users_jobs
中的列,因为新用户的列值将为null,并且将返回零计数。只要确保计算一个不能为空的列;在这种情况下,我选择了tbl_users_jobs.Id
,假设它是PK:
SELECT
tbl_user.Id,
tbl_user.Name,
COUNT(tbl_users_jobs.Id) AS JobCount
FROM tbl_user
LEFT JOIN tbl_users_jobs ON tbl_user.Id = tbl_users_jobs.user_id
GROUP BY
tbl_user.Id,
tbl_user.Name
ORDER BY JobCount DESC
按谁拥有最少工作的顺序返回结果。您可以将第一行作为用户来获取新作业,但请记住,可能有其他用户具有相同数量的作业 - 换句话说,可能有2或3个或更多用户没有作业。你必须决定如何在它们之间做出选择。