命令从一个表一次显示2行?

时间:2017-05-24 07:49:52

标签: mysql sql oracle plsql

我有一个包含3行4列的表,其中包含不同的参数,如下所示:

Column1    Column2   Column3
111         data1     124
233         data3     147
254         data4     154
212         data2     100

使用选择命令

select * from Tablename where Column = 124;

我从表中获得第1行值,如下所示:

Column1    Column2   Column3
111         data1     124

我希望一次显示2行,使用与下面相同的选择命令

Column1    Column2   Column3
111         data1     124
212         data2     100

有人能告诉我从表中选择2行的命令吗?

3 个答案:

答案 0 :(得分:0)

试试这个

select top 2 * from Tablename where Column3>=124 order by Column3

或者在Oracle中:

select * from Tablename where Column3>=124 and rownum < 3;

答案 1 :(得分:0)

您必须维护order并使用rownum。像

这样的东西
select t.*,rownum from
(select * From your_table 
order by column1) t
where rownum <=2;

rownum <=更改为任何整数,具体取决于您的预期输出。

这是 DBFiddle Demo

  

说明:在内部查询中使用order by的原因是您   不能保证数据库会返回相同的结果   订购你已经插入。所以有了硬order by你强迫内心   查询以您想要的顺序显示输出。然后使用rownum   结果集以获得预期的输出。

答案 2 :(得分:0)

如果这是Oracle 12c,您可以使用新的fetch first n rows语法:

with demo (column1, column2, column3) as
     ( select 111, 'data1', 124 from dual union all
       select 233, 'data3', 147 from dual union all
       select 254, 'data4', 154 from dual union all
       select 212, 'data2', 100 from dual )
select * from demo
order by column3, column1
fetch first 2 rows only;

我不知道MySQL,但快速搜索建议

select ... 
from  sometable 
order by ...
limit 2

然后你还没有说你想要哪两行,所以我可以离开。