【问题标题】:Command to display 2 rows at a time from one table?命令从一个表中一次显示 2 行?
【发布时间】:2017-10-24 10:21:51
【问题描述】:

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

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

通过使用选择命令

select * from Tablename where Column = 124;

我正在从下表中获取第一行的值,如下所示:

Column1    Column2   Column3
111         data1     124

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

Column1    Column2   Column3
111         data1     124
212         data2     100

谁能告诉我从表格中选择 2 行的命令?

【问题讨论】:

  • mysql 还是 Oracle DB?
  • 删除了 mysql 标签。
  • 你的预期结果背后的逻辑是什么?
  • 你应该解释你需要帮助别人帮助你背后的逻辑。据我们所知,您可能希望获得两个随机行,这不是一个很好的业务逻辑......
  • 在表格中再添加一行,(250, 'data4', 124),并相应调整预期结果。

标签: mysql sql oracle plsql


【解决方案1】:

试试这个

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

或者在 Oracle 中:

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

【讨论】:

  • Oracle真的支持top吗?
  • select * from Tablename where Column3>=124 order by Column3 limit 2
  • @Ravi。 Column3&gt;=124 不会将 100 作为输出。那是错误的。 OP 只想要前 2 行,只需添加条件 rownum
【解决方案2】:

您必须维护order 并使用rownum。类似的东西

select t.*,rownum from
(select * From your_table 
order by column1) t
where rownum <=2;

根据您的预期输出将rownum &lt;= 更改为任何整数。

这里是DBFiddle Demo

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

【讨论】:

    【解决方案3】:

    如果这是 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
    

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

    【讨论】:

      猜你喜欢
      • 2021-09-01
      • 1970-01-01
      • 2012-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-27
      • 2017-05-01
      • 2012-09-16
      相关资源
      最近更新 更多