foo.val > bar.val である bar の最大値と結合された foo のすべての値を返そうとしています。
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
前もって感謝します。