【问题标题】:Retrieve limited rows from single column from mysql database从mysql数据库的单列中检索有限的行
【发布时间】:2018-09-24 17:27:57
【问题描述】:

我试图从 MySql 数据库的单列中仅检索最近添加的最后 3 行。请帮忙——

我的jsp代码:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <%@ page import="java.sql.* "%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title></title>
</head>
<body>
<% Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/eco", "root", "vicky");
PreparedStatement ps = con.prepareStatement("select * from registration");
ResultSet rs=ps.executeQuery();
rs.afterLast();

while(rs.previous()){ %>
<p>  <%= rs.getString(2) %> </p>
<%} %>
</body>
</html>

我的数据库结构:

 ID   username   email                  password
    1   vikas      vikas5@gmail.com        44
    2   Aravind    Aravind@gmail.com       12
    3   rakesh     rakesh@gmail.com        123
    4   chandra    chnadra@gmail.com       123
    5   shiva      chinthala@gmail.com     12345
    6   sai         sai@gmail.com          4321
    7   ravi         ravi@gmail.com        987654

我得到的输出

ravi
sai
shiva
chandra
rakesh
Aravind
vikas

但我想输出为

ravi        sai      shiva  
chandra   rakesh     Aravind  
vikas

【问题讨论】:

    标签: java mysql jsp


    【解决方案1】:

    您需要使用Order By with Limit

    • Order by ID DESC 根据ID 列对数据进行降序排序。
    • LIMIT 3 获取排序数据的前 3 行。

    更改以下内容:

    PreparedStatement ps = con.prepareStatement("select * from registration");
    

    PreparedStatement ps = con.prepareStatement("select * from registration order by ID desc limit 3");
    

    【讨论】:

    • 如果我正确理解了 OP 的问题,则存在检索表中 最后 n 个输入的问题,与 ID 无关(除了ID 是自动递增的)
    • @zlakad "最近从单列添加的最后 3 行" - 因为 ID 是自动递增的 - 可以公平地假设最后 3 个添加的行的前 3 个 id 值按降序排列
    • 我明白这一点,但是如果 ID 不是自动递增的怎么办?
    • @zlakad 然后上帝保存 OP 的数据库结构。尽管如此,根据他的预期输出,我当前的查询应该适用于给定的样本数据和预期输出
    • 哦,好吧,我同意。
    【解决方案2】:

    如果您只想获取最后 3 条记录,则需要更改查询。

    你必须像这样编写一个嵌套查询:

    选择 * FROM (select * from registration ORDER BY ID) 注册 WHERE rownum

    更多信息请参考以下链接:

    https://www.techonthenet.com/oracle/questions/bottom_records.php

    https://www.techonthenet.com

    这是一个非常好的网站,对学习数据库和其他技术很有帮助。

    希望对你有帮助

    你也可以做到 这个查询也有效

    SELECT * FROM registration ORDER BY ID DESC LIMIT 3;

    【讨论】:

      猜你喜欢
      • 2013-08-26
      • 1970-01-01
      • 1970-01-01
      • 2011-09-28
      • 1970-01-01
      • 2014-04-10
      • 2016-03-29
      • 2017-08-02
      • 2013-03-24
      相关资源
      最近更新 更多