我正在尝试返回 foo 的所有值以及 bar 的最大值,其中 foo.val > bar.val
CREATE TABLE `foo` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `val` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
);
CREATE TABLE `bar` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `val` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
);
insert into foo (val) values (3), (5), (7), (10);
insert into bar (val) values (1), (1), (2), (3), (4), (5), (6), (7), (8), (20);
预期的输出如下:
+--------+---------+------------------------+
| foo.id | foo.val | max(bar.val) < foo.val |
+--------+---------+------------------------+
|  1     | 3       | 2                      |
|  2     | 5       | 4                      |
|  3     | 7       | 6                      |
|  4     | 10      | 8                      |
+--------+---------+------------------------+
这可以通过单个查询而不是在代码域中循环来完成吗?
SELECT max(val) from bar where val < 3;
SELECT max(val) from bar where val < 5;
SELECT max(val) from bar where val < 7;
SELECT max(val) from bar where val < 10;
有人对此有任何想法吗?
如果有人想尝试,小提琴就在这里http://sqlfiddle.com/#!2/de0f9/7
提前致谢。