【发布时间】:2011-07-22 09:30:48
【问题描述】:
假设我有表“部门”(200 行)和“员工”(300,000 行)每个都有自己的详细信息 两者结合的向量表是“dep_emp”
CREATE TABLE IF NOT EXISTS `dep_emp` (
`id` int(11) NOT NULL DEFAULT '0',
`dep_id` int(11) NOT NULL DEFAULT '0',
`emp_id` int(11) NOT NULL DEFAULT '0'
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
我的问题是如何进行查询以获取每个部门的两名员工(任意两名员工)? 到目前为止,我的解决方案是这样的:
(SELECT * FROM `dep_emp` WHERE dep_id=1 LIMIT 2) UNION ALL
(SELECT * FROM `dep_emp` WHERE dep_id=2 LIMIT 2) UNION ALL
(SELECT * FROM `dep_emp` WHERE dep_id=3 LIMIT 2) ........etc
当然,每个部门都会这样做 {n} 次,所以如果我想为所有部门显示两个员工,那么我将不得不写 199 UNION ALL,这非常难看 任何其他解决方案 PS。有很多细节我已经从问题中移出以使事情变得更简单
【问题讨论】: