我需要一套约5k食谱和
这应该留给我一份分类的,未经分类的食谱清单。
我发现很难从初始集中减去记录,特别是当每个集合大约为10k时。我一直试图使用的查询要么是缓慢的,要么是返回结果,我不自信。我只是想对数字做一些答案,所以查询不一定特别快 - 合理的做法。这些是我正在使用的表格:
表格食谱:这些是我们正在操作的食谱。 ids是独一无二的。
mysql> select id, title from recipes limit 10;
+---------+---------------------------------------------+
| id | title |
+---------+---------------------------------------------+
| R162739 | Chipotle Steak |
| R223652 | Sweet Pea Mash on Toast |
| R216897 | Horchata Latte |
| R125550 | Roasted Beet and Fennel Salad |
| R196267 | Sweet Potatoes with Fruit |
| R215630 | Mini Oatmeal-Raisin Cookies |
| R219133 | Pork with Butternut Squash |
| R166935 | Herb-Ginger Bulgur |
| R208872 | Chocolate-Macadamia Dreams |
| R220442 | Smoked Turkey Salad |
+---------+---------------------------------------------+
表recipe_log :每当有人向某个类别添加配方时,会在日志表中生成一个注释。日志表有大约14k条记录 - 其中许多不是我感兴趣的类型.Ids不是唯一的 - 相同的食谱ID可能有很多记录。
mysql> select * from recipe_log where type='category changes' limit 10;
+---------+---------------------+------------------+------+
| id | date | type | note |
+---------+---------------------+------------------+------+
| R216064 | 2014-05-23 19:05:47 | category changes | NULL |
| R216064 | 2014-05-23 19:06:11 | category changes | NULL |
| R178159 | 2014-05-23 21:55:08 | category changes | NULL |
| R178159 | 2014-05-24 02:13:34 | category changes | NULL |
| R178159 | 2014-05-24 21:49:20 | category changes | NULL |
| r178159 | 2014-05-24 21:52:52 | category changes | NULL |
| r178613 | 2014-05-24 21:58:07 | category changes | NULL |
| r178613 | 2014-05-24 21:59:24 | category changes | NULL |
| r178159 | 2014-05-24 22:00:11 | category changes | NULL |
| r178613 | 2014-05-24 22:00:51 | category changes | NULL |
+---------+---------------------+------------------+------+
表recipe_batches :此表包含已添加到批处理中的配方。 Ids不是唯一的 - 可以将相同的配方添加到多个批次中。这张表中有大约10条记录。
mysql> select recipe_id, batch_id, date from recipe_batches limit 10;
+-----------+----------+---------------------+
| recipe_id | batch_id | date |
+-----------+----------+---------------------+
| R109651 | EH_1_250 | 2014-06-04 01:01:01 |
| R111068 | EH_1_250 | 2014-06-04 01:01:01 |
| R113500 | EH_1_250 | 2014-06-04 01:01:01 |
| R117349 | EH_1_250 | 2014-06-04 01:01:01 |
| R117494 | EH_1_250 | 2014-06-04 01:01:01 |
| R109648 | EH_1_250 | 2014-06-04 01:01:01 |
| R109652 | EH_1_250 | 2014-06-04 01:01:01 |
| R110440 | EH_1_250 | 2014-06-04 01:01:01 |
| R113004 | EH_1_250 | 2014-06-04 01:01:01 |
| R111068 | EH_1_250 | 2014-06-04 01:01:01 |
+-----------+----------+---------------------+
答案 0 :(得分:0)
您可以先获取recipe_id的列表,首先获取已分类的列表,因为您要保留它们并删除已经批处理的列表。除非我理解错误,否则每个已经分类的配方都应该被退回,除非它也是批次的。
select distinct a.recipe_id
from recipe_log a
where a.type='category changes'
and not exists (select * from recipe_batches b where a.recipe_id = b.recipe_id)