我有一个包含两列的表,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作为编程语言。
答案 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
上的索引来提高性能。