mysql使用特定列的非重复计数从表中选择

时间:2015-04-22 00:18:04

标签: mysql select count

我有一个包含两列的表,dept_id和loc_id如下:

+----------+--------+
| dept_id  | loc_id |
+----------+--------+
|    1     |    1   |
|    2     |    1   |
|    2     |    2   |
|    3     |    1   |
|    3     |    2   |
|    3     |    3   |
|    3     |    4   |
|    3     |    5   |
+----------+--------+

我想动态选择前两个'dept_ids'而不使用“IN”,因为我不知道前两个'dept_ids',然后选择接下来的两个'dept_ids'......等等,所以它应该如果我选择前两个,则检索这个:

+----------+--------+
| dept_id  | loc_id |
+----------+--------+
|    1     |    1   |
|    2     |    1   |
|    2     |    2   |
+----------+--------+

这可能吗?

我正在使用MySQL数据库,使用PHP作为编程语言。

1 个答案:

答案 0 :(得分:0)

除非另一列指定排序,否则SQL没有“第一”行的概念。如果你只有一张桌子,你可以有效地做你想做的事情:

select t.*
from table t join
     (select dept_id
      from table t
      group by dept_id
      order by dept_id
      limit 0, 2
     ) td
     on t.dept_id = td.dept_id;

您只需将0更改为2然后更改4,依此类推。

更常见的是,我希望你有一个Departments表。如果是这样的话:

select t.*
from table t join
     (select dept_id
      from Departments d
      order by dept_id
      limit 0, 2
     ) td
     on t.dept_id = td.dept_id;

在任何一种情况下,您都需要dept_id上的索引来提高性能。