1

present(id) 指定された条件とともに隣接行をフェッチする MYSQL クエリ

お気に入り

ID | BOOK     |
--------------
1  | xyzbooks |

2  | pqrbooks |

3  | dnsaddds |

4  | dfbsakjf |

5  | dbsadbdd |

6  | tyrbooks |

7  | sfdffdsf |

8  | yuibooks |

私はID 3(URLから取得できるdnsaddds)を使用しており、本を検索しました。次に、3 行目の行データと、検索されたテキスト (本) の前後の結果をフェッチする必要があります。

期待される結果は次のとおりです

ID | BOOK     | AUTHOR | DATE
---------------------------
2  | pqrbooks | fbsdjf | 2013

3  | dnsaddds | fdsfbs | 2012

6  | tyrbooks | fdsdff | 2011

ユニオンなどを使用しない単一のクエリを探しています。

4

2 に答える 2

2

これはうまくいくはずです:

select id, book, author, date
from t
where id = 3
      OR id = (SELECT MAX(id) FROM t WHERE id < 3)
      OR id = (SELECT MIN(id) FROM t WHERE id > 3)
于 2013-04-24T13:12:34.537 に答える
0

これを行うにはunion、必要な 3 つの行をまとめます。

(select id, book, author, date
 from t
 where id = 3
) union all
(select id, book, author, date
 from t
 where id < 3 and book like '%books%'
 order by id desc
 limit 1
) union all
(select id, book, author, date
 from t
 where id > 3 and book like '%books%'
 order by id
 limit 1
)
于 2013-04-23T18:55:57.583 に答える