0

我有两个表: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

谢谢。

4

1 回答 1

1

您可以使用LEFT JOIN.

诀窍是计算一列,tbl_users_jobs因为对于新用户,该列的值将为空,并且将返回零计数。只要确保计算一个不能为空的列;在这种情况下,我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 个或更多用户拥有零个工作。您必须决定如何在它们之间进行选择。

于 2013-08-08T20:09:07.567 回答