php sql查询某id,php – SQL:在给定ID的where子句中查找下一行

我在

MySQL数据库中有一个名为products的表.产品看起来像这样:

id name din strength active deleted

1 APA TEST 00246374 25 1 0

4 APA BOB 00246375 50 1 0

5 APA TIRE 00246888 50 1 0

7 APA ROT 00521414 100 1 0

9 APA APA 01142124 100 1 0

6 APA CODE 00121212 150 1 0

8 APA SERV 00011145 600 1 0

显然我遗漏了几个对我的问题不重要的专栏.当我查询这个表时,我将按几个不同的列中的一个进行排序(用户界面允许单个用户更改排序列和顺序),我可能有一个搜索子句,在这种情况下我会做一个LIKE子句名称和DIN.

我想知道的是,鉴于排序信息和搜索信息,以及特定产品的ID(我说搜索004,返回3个结果,我正在查看其中一个),我怎么能得到下一个和以前的产品?

我需要这样做,因为如果用户在搜索和排序结果后点击编辑/查看其中一个产品,他们希望能够循环浏览结果而无需转到上一页.

有没有一种好的有效方法在SQL中执行此操作,或者我最好使用PHP?任何想法也欢迎.

目前正在使用此SQL查询,如果我按强度列排序,则会遇到问题,因为存在重复值

SELECT T.*

FROM `wp_products` T

INNER JOIN `wp_products` curr on curr.id = 38

AND ((T.strength = curr.strength and T.id < curr.id)

OR (T.strength > curr.strength))

WHERE T.active = 1 AND T.deleted = 0 AND (T.name LIKE '%%' OR T.din LIKE '%%')

ORDER BY T.strength ASC, T.id ASC

LIMIT 1

我的PHP代码(使用WordPress)(旨在获取下一个项目)

$sql = 'SELECT T.*

FROM `' . $wpdb->prefix . 'apsi_products` T

INNER JOIN `' . $wpdb->prefix . 'apsi_products` curr on curr.id = ' . $item->id . '

AND ((T.' . $wpdb->escape( $query['orderby'] ) . ' = curr.' . $wpdb->escape( $query['orderby'] ) . ' and T.id > curr.id)

OR (T.' . $wpdb->escape( $query['orderby'] ) . ' > curr.' . $wpdb->escape( $query['orderby'] ) . '))

WHERE T.active = 1 AND T.deleted = 0 AND (T.name LIKE \'%' . $query['where'] . '%\' OR T.din LIKE \'%' . $query['where'] . '%\')

ORDER BY T.' . $wpdb->escape( $query['orderby'] ) . ' ' . $query['order'] . ', T.id ASC

LIMIT 1;';

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值