আমার কলাম সহ একটি আইএনডিবিবি টেবিল 'আইডিটাইমস' (মাইএসকিউএল 5.0.22-লগ) রয়েছে
`id` int(11) NOT NULL,
`time` int(20) NOT NULL, [...]
একটি যৌগিক অনন্য কী সহ
UNIQUE KEY `id_time` (`id`,`time`)
সুতরাং আইডি প্রতি একাধিক টাইমস্ট্যাম্প এবং টাইমস্ট্যাম্পে একাধিক আইডি থাকতে পারে।
আমি একটি ক্যোয়ারী সেট আপ করার চেষ্টা করছি যেখানে আমি সমস্ত এন্ট্রি এবং প্রতিটি প্রবেশের পরবর্তী পরবর্তী সময়ের জন্য উপস্থিত থাকি, যদি এটি উপস্থিত থাকে তবে এটি অবশ্যই ফিরে আসবে যেমন:
+-----+------------+------------+
| id | time | nexttime |
+-----+------------+------------+
| 155 | 1300000000 | 1311111111 |
| 155 | 1311111111 | 1322222222 |
| 155 | 1322222222 | NULL |
| 156 | 1312345678 | 1318765432 |
| 156 | 1318765432 | NULL |
+-----+------------+------------+
এই মুহূর্তে আমি অনেক দূরে আছি:
SELECT l.id, l.time, r.time FROM
idtimes AS l LEFT JOIN idtimes AS r ON l.id = r.id
WHERE l.time < r.time ORDER BY l.id ASC, l.time ASC;
তবে অবশ্যই এটি r.time> l.টাইম দিয়ে সমস্ত সারি দেয় এবং কেবল প্রথমটিই নয় ...
আমার ধারণা আমার মতো সাব-সাবলেট দরকার lect
SELECT outer.id, outer.time,
(SELECT time FROM idtimes WHERE id = outer.id AND time > outer.time
ORDER BY time ASC LIMIT 1)
FROM idtimes AS outer ORDER BY outer.id ASC, outer.time ASC;
তবে আমি কীভাবে বর্তমান সময়ের উল্লেখ করতে জানি না (আমি জানি উপরেরটি বৈধ এসকিউএল নয়)।
আমি কীভাবে এটি একটি একক ক্যোয়ারী দিয়ে করব (এবং আমি @ ভার্ভেবলগুলি ব্যবহার না করাই পছন্দ করব যা টেবিলে একসাথে এক সারি সারি হলেও শেষ মানটি মনে রাখার উপর নির্ভর করে)?
is null
এবং যোগটিকে আই 3 এর সাথে প্রতিস্থাপন করিwhere not exists (select 1 from itimes i3 where [same clause])
তবে কোডটি আমরা কী প্রকাশ করতে চাই তার আরও ঘনিষ্ঠভাবে প্রতিফলিত করবে।