假设我们有如下表:查询来选择:谁两名职工工作在同一家公司
company company_has_employee employee
-------------------------------------------------------------
id company_id id
companzy_name employee_id emplyee_name
如何创建SQL查询,以检索任何两个员工,谁在同一家公司,什么是作品这家公司?
假设我们有如下表:查询来选择:谁两名职工工作在同一家公司
company company_has_employee employee
-------------------------------------------------------------
id company_id id
companzy_name employee_id emplyee_name
如何创建SQL查询,以检索任何两个员工,谁在同一家公司,什么是作品这家公司?
假设于尔根·D的连接表是正确的,我将修改查询
select top 2 company_name, e.employee_name
from compyny c
join company_has_employee ce on ce.company_id = c.id
join employee e on e.id = cs.employee_id
group by company_name
having count(e.id) > 1
这将始终返回顶部2员工
克林斯曼D的原始查询总是会返回首先和最后一名员工根据他们的ID。
如果你想两个雇员随机选择的,那么你可以试试这个:
select top 2 company_name, e.employee_name
from compyny c
join company_has_employee ce on ce.company_id = c.id
join employee e on e.id = cs.employee_id
group by company_name
having count(e.id) > 1
order by RAND((e.ID)*DATEPART(millisecond, GETDATE()))
最后一个ORDER BY子句将随机变化的记录的顺序,你总是会得到一个随机顺序的顶部2。这意味着每次运行查询时都会选择2名随机员工。
select company_name,
min(e.employee_name) as emp1,
max(e.employee_name) as emp2
from compyny c
join company_has_employee ce on ce.company_id = c.id
join employee e on e.id = cs.employee_id
group by company_name
having count(e.id) > 1
请问,请解释一下,在这种情况下,集合函数(最小值,最大值)是如何工作的? –
你说你需要2名员工,每个公司至少有2名员工。如果你由公司分组,那么你可以使用min()和max()来为每个公司获得2名员工。数据库将按字母顺序使用最小名称,按字母顺序使用最大名称。 –
你想让你的SQL随机选择任何两名员工吗?即每次运行查询时,结果可能不同。那是对的吗? – Swagata
就这么清楚,你想要一个拥有2名员工的公司吗? – Lamak
我在这里失去..两名员工?那意味着公司只有两名员工或任何两名员工? – AJP