Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

sql वर्तमान पंक्ति की अगली या पिछली पंक्ति के लिए एक पंक्ति खींच रहा है

पिछले/अगले रिकॉर्ड खोजने के लिए मैं यही उपयोग करता हूं। आपकी तालिका के किसी भी कॉलम को सॉर्ट कॉलम के रूप में इस्तेमाल किया जा सकता है, और किसी भी तरह से जुड़ने या खराब हैक की आवश्यकता नहीं है:

अगला रिकॉर्ड (वर्तमान रिकॉर्ड से बड़ी तिथि):

SELECT id, title, MIN(created) AS created_date
FROM photo
WHERE created >
  (SELECT created FROM photo WHERE id = '32kJ')
GROUP BY created
ORDER BY created ASC
LIMIT 1;

पिछला रिकॉर्ड (वर्तमान रिकॉर्ड से कम तिथि):

SELECT id, title, MAX(created) AS created_date
FROM photo
WHERE created <
  (SELECT created FROM photo WHERE id = '32kJ')
GROUP BY created
ORDER BY created DESC
LIMIT 1;

उदाहरण:

CREATE TABLE `photo` (
    `id` VARCHAR(5) NOT NULL,
    `title` VARCHAR(255) NOT NULL,
    `created` DATETIME NOT NULL,
    INDEX `created` (`created` ASC),
    PRIMARY KEY (`id`)
)
ENGINE = InnoDB;

INSERT INTO `photo` (`id`, `title`, `created`) VALUES ('XEi43', 'my family',       '2009-08-04');
INSERT INTO `photo` (`id`, `title`, `created`) VALUES ('dDls',  'friends group',   '2009-08-05');
INSERT INTO `photo` (`id`, `title`, `created`) VALUES ('32kJ',  'beautiful place', '2009-08-06');
INSERT INTO `photo` (`id`, `title`, `created`) VALUES ('EOIk',  'working late',    '2009-08-07');

SELECT * FROM photo ORDER BY created;
+-------+-----------------+---------------------+
| id    | title           | created             |
+-------+-----------------+---------------------+
| XEi43 | my family       | 2009-08-04 00:00:00 |
| dDls  | friends group   | 2009-08-05 00:00:00 |
| 32kJ  | beautiful place | 2009-08-06 00:00:00 |
| EOIk  | working late    | 2009-08-07 00:00:00 |
+-------+-----------------+---------------------+


SELECT id, title, MIN(created) AS next_date
FROM photo
WHERE created >
  (SELECT created FROM photo WHERE id = '32kJ')
GROUP BY created
ORDER BY created ASC
LIMIT 1;

+------+--------------+---------------------+
| id   | title        | next_date           |
+------+--------------+---------------------+
| EOIk | working late | 2009-08-07 00:00:00 |
+------+--------------+---------------------+

SELECT id, title, MAX(created) AS prev_date
FROM photo
WHERE created <
  (SELECT created FROM photo WHERE id = '32kJ')
GROUP BY created
ORDER BY created DESC
LIMIT 1;

+------+---------------+---------------------+
| id   | title         | prev_date           |
+------+---------------+---------------------+
| dDls | friends group | 2009-08-05 00:00:00 |
+------+---------------+---------------------+


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL में REGEXP_SUBSTR () फ़ंक्शन कैसे काम करता है

  2. डेटाबेस व्यवस्थापन के लिए MySQL कार्यक्षेत्र स्थापित करें

  3. सी # में एक MySQL डेटाबेस में दिनांक (DateTime.now) कैसे जोड़ें

  4. एक फॉर्म में इनपुट की सरणी के माध्यम से कैसे लूप करें?

  5. त्रुटि कोड 1064, SQL स्थिति 42000:आपके SQL सिंटैक्स में त्रुटि है;