gpt4 book ai didi

MySql:查找表 A 中未在表 B 或 C 中指示的行

转载 作者:行者123 更新时间:2023-11-30 00:08:09 28 4
gpt4 key购买 nike

我需要一套大约 5k 的食谱和

  1. 删除尚未分类的内容
  2. 删除已批处理的

这应该给我留下一个分类的、未批处理的食谱列表。

我发现很难从初始集中减去记录,尤其是当每组大约 10k 时。我一直尝试使用的查询要么很慢,要么返回我没有信心的结果。我只是想得到一些关于数字的答案,所以查询不必特别快 - 合理即可。这些是我正在使用的表格:

餐 table 食谱:这些是我们正在操作的食谱。 ID 是唯一的。

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 条记录 - 其中许多不是我感兴趣的类型。ID 不是唯一的 - 相同的菜谱 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:此表包含已添加到批处理中的配方。 ID 不是唯一的 - 相同的配方可能会添加到多个批处理中。该表大约有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 |
+-----------+----------+---------------------+

最佳答案

您可以通过首先获取已分类的列表来获取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)

关于MySql:查找表 A 中未在表 B 或 C 中指示的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24334624/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com