以下に説明する構造を持つテーブルから前と次のIDを取得する方法:
+----+---------+---------------------+
| id | urgency | timestamp |
+----+---------+---------------------+
| 1 | 0 | 2013-01-01 00:00:00 |
| 2 | 2 | 2013-01-01 00:00:00 |
| 3 | 1 | 2013-01-05 09:30:00 |
| 4 | 2 | 2013-01-01 00:00:00 |
| 5 | 2 | 2013-01-01 00:00:00 |
| 6 | 1 | 2013-01-06 10:00:00 |
| 7 | 0 | 2013-01-01 00:00:00 |
| 8 | 0 | 2013-01-03 00:00:00 |
| 9 | 1 | 2013-02-01 13:30:00 |
| 10 | 0 | 2013-01-04 00:00:00 |
+----+---------+---------------------+
テーブルは次のようにソートされます:緊急度asc、タイムスタンプasc、idasc
ソートされたテーブルは次のとおりです。
+----+---------+---------------------+
| id | urgency | timestamp |
+----+---------+---------------------+
| 1 | 0 | 2013-01-01 00:00:00 |
| 7 | 0 | 2013-01-01 00:00:00 |
| 8 | 0 | 2013-01-03 00:00:00 |
| 10 | 0 | 2013-01-04 00:00:00 |
| 3 | 1 | 2013-01-05 09:30:00 |
| 6 | 1 | 2013-01-06 10:00:00 |
| 9 | 1 | 2013-02-01 13:30:00 | <= CURRENT_ID
| 2 | 2 | 2013-01-01 00:00:00 |
| 4 | 2 | 2013-01-01 00:00:00 |
| 5 | 2 | 2013-01-01 00:00:00 |
+----+---------+---------------------+
位置がCURRENT_ID-1またはCURRENT_ID+1であるMySQLから何かを選択する方法はありますか?
私にできることは、簡単なクエリを実行することです。
SELECT
id
FROM
MY_TABLE
ORDER BY
urgency asc,
timestamp asc,
id asc
PHPで結果のループを作成し、適切な位置を見つけますが、これは非常に速く増加するテーブルです。だからそれは選択肢ではありません...あなたがアドバイスできる別の解決策があることを願っています