想象以下表格:
创建表格框(id int,名称文本,...);
创建表 thingsinboxes(id int, box_id int, thing enum('apple,'banana','orange');
表格看起来像:
盒子: 编号 | 姓名 1 | 只有橘子 2 | 只有橘子2 3 | 橙子香蕉 4 | 杂项 收件箱: 编号 | box_id | 事物 1 | 1 | 橙 2 | 1 | 橙 3 | 2 | 橙 4 | 3 | 橙 5 | 3 | 香蕉 6 | 4 | 橙 7 | 4 | 苹果 8 | 4 | 香蕉
如何选择至少包含一个橙色且没有不是橙色的框?
假设我有几十万个盒子,而且盒子里可能有一百万个东西,这个规模如何?
如果可能的话,我想把这一切都保存在 SQL 中,而不是用脚本对结果集进行后处理。
我同时使用 postgres 和 mysql,所以子查询可能很糟糕,因为 mysql 不优化子查询(无论如何都是 6 之前的版本)。