【问题标题】:Read Next/Previous record via SQL通过 SQL 读取下一条/上一条记录
【发布时间】:2014-12-20 08:53:31
【问题描述】:

我有一个简单的客户端数据库(使用 MySQL)。该应用程序一次读取一条记录。我希望能够单击按钮阅读下一个或阅读上一个。

我没有找到的记录的记录集。一次只能找到一条记录。

使用 SURNAME+FIRSTNAME+CLIENTID 键保证记录的唯一性。

要阅读下一条记录,我执行以下操作(效果很好)。这假设我已经阅读了一条记录,所以我知道它的当前姓氏+给定名称+clientid,因此获取 NEXT 记录只是选择一个“大于”当前记录的记录(代码如下所示)。

"select * from Clients where concat(Surname,GivenName,ClientID) > '" & SearchKey & "' ORDER BY Surname, GivenName, ClientID LIMIT 1"

如果我有两条记录“David Morris”和“David Morrison”,则上面的 NEXT 记录逻辑可以正常工作。但是我该如何阅读之前的记录呢?

示例:假设我在数据库中有以下 6 条记录。

Morris, Alan
Morris, Barry
Morris, Charlie
Morris, David
Morrison, Andrew
Morrison, Brendon

我知道我想处理客户记录,我“认为”他的姓是 Morrison(不知道他的名字)。我想调出第一条“Morrison”唱片,然后按向下翻页(或向上翻页),直到找到我想要的唱片。使用我的示例 6 记录,我会找到的第一个是 Morrison-Andrew。我可以向下按页面,我会找到 Morrison-Brendon。但这不是我想要的客户。所以我改为向上翻页,现在向后退。从莫里森-布伦登,到莫里森-安德鲁,再到莫里森-大卫。现在我有了我想要的唱片。莫里斯-大卫。

如果我使用带有“.....LIKE 'MORRISON%'....”的选择语句,那么我将无法向后翻页以找到 Morris-David。

现在我总是可以告诉客户以不同的方式使用应用程序,但这是他希望它工作的方式。

我已经尝试过使用带有 DESC 序列的 ORDER BY,但我还没有找到合适的模式。

提前感谢您提供的任何建议。

大卫。

【问题讨论】:

  • 您尝试使用哪种语言访问数据库?
  • 此 where 子句不太可能可索引:where concat(Surname,GivenName,ClientID) 如果此查询经常运行,您可能希望生成计算列并为其编制索引(或使用函数索引,如果可用)。
  • 通常是where concat(Surname,GivenName,ClientID) < {value} ORDER BY Surname desc, GivenName desc, ClientID desc LIMIT 1
  • 这似乎是一种奇怪的数据库使用方式。一般来说,我认为您只想使用 select * from clients where [some condition] order by surname, givenname, client_id 或类似的东西。你能解释一下更大的背景吗?那么也许我们可以给你一个更好的答案。还有为什么不使用 <.>
  • 为什么没有唯一的 id 列?

标签: mysql select next


【解决方案1】:

我找到了答案。我没有意识到您可以使用 CONCAT() 作为 ORDER BY 子句的一部分。

下一步按钮

select * from Clients where concat(Surname,GivenName,ClientID) > '" & SearchKey & "' ORDER BY concat(Surname, GivenName, ClientID) LIMIT 1

上一个按钮

select * from Clients where concat(Surname,GivenName,ClientID) < '" & SearchKey & "' ORDER BY concat(Surname, GivenName, ClientID) DESC LIMIT 1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多