查找最接近的值-MySQL

查找最接近的值-MySQL,mysql,Mysql,如何为多个值找到最接近的值 例如: 我有这张桌子 A 1 B 2 C 3 D 7 E 11 F 12 所以- 谢谢试试这个: SELECT t1.col1, t2.col1 FROM mytable AS t1 INNER JOIN mytable AS t2 ON t1.col1 <> t2.col1 LEFT JOIN mytable AS t3 ON t3.col1 <> t2.col1 AND t3.col1 <> t1.col

如何为多个值找到最接近的值

例如: 我有这张桌子

A 1

B 2

C 3

D 7

E 11

F 12
所以-

谢谢

试试这个:

SELECT t1.col1, t2.col1
FROM mytable AS t1
INNER JOIN mytable AS t2 
  ON t1.col1 <> t2.col1
LEFT JOIN mytable AS t3 
  ON t3.col1 <> t2.col1 AND t3.col1 <> t1.col1 AND 
     ABS(t3.col2 - t1.col2) < ABS(t2.col2 - t1.col2)
WHERE t3.col1 IS NULL  
ORDER BY t1.col1
试试这个:

SELECT t1.col1, t2.col1
FROM mytable AS t1
INNER JOIN mytable AS t2 
  ON t1.col1 <> t2.col1
LEFT JOIN mytable AS t3 
  ON t3.col1 <> t2.col1 AND t3.col1 <> t1.col1 AND 
     ABS(t3.col2 - t1.col2) < ABS(t2.col2 - t1.col2)
WHERE t3.col1 IS NULL  
ORDER BY t1.col1

你可以用这样的小翻译表

CREATE TABLE `translate` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `from` char(1) DEFAULT NULL,
  `to` char(1) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `from` (`from`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;

INSERT INTO `translate` (`id`, `from`, `to`)
VALUES
    (1, 'A', 'B'),
    (2, 'B', 'A'),
    (3, 'B', 'C'),
    (4, 'C', 'B'),
    (5, 'D', 'E'),
    (6, 'E', 'F'),
    (7, 'F', 'E');
样品


你可以用这样的小翻译表

CREATE TABLE `translate` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `from` char(1) DEFAULT NULL,
  `to` char(1) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `from` (`from`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;

INSERT INTO `translate` (`id`, `from`, `to`)
VALUES
    (1, 'A', 'B'),
    (2, 'B', 'A'),
    (3, 'B', 'C'),
    (4, 'C', 'B'),
    (5, 'D', 'E'),
    (6, 'E', 'F'),
    (7, 'F', 'E');
样品


@我很高兴能帮忙。如果这个答案有助于您解决问题,请将其或任何其他答案标记为已接受。@我很高兴能够提供帮助。请将此答案或任何其他答案标记为已接受,如果它有助于您解决问题。