【发布时间】:2022-01-14 21:13:10
【问题描述】:
假设我有一张名为food_prefs 的桌子,里面有朋友和他们最喜欢的食物。
| id | name | favorite_foods |
|---|---|---|
| 1 | Amy | Pizza |
| 2 | Bob | Pizza |
| 3 | Chad | Caviar |
| 4 | Dana | Pizza |
| 5 | Dana | Salad |
我知道如何获取每个喜欢披萨的人的姓名,但我不清楚如何选择仅将 pizza 列为他们最喜欢的食物的人。也就是说,从上表中,我只想选择 Amy 和 Bob。
此外,如果有一个解决方案还可以选择具有多个收藏夹的名称(例如,在另一个查询中选择将pizza and salad 作为其收藏夹的每个人,这将),那就太好了。最后,如果pizza and salad 查询不仅返回了只喜欢这两种食物的人,而且还返回了只有一种最喜欢出现在该列表中的人(例如,只喜欢披萨或只喜欢沙拉的人——除了乍得之外的所有人),这可能会很有用在这个例子中)
(我发现 sqlite 文档不是最直接的,如果这是一个非常简单的问题,很抱歉!)
【问题讨论】:
-
似乎使用
grouping byname然后选择使用having group_concat(favorite_foods) = 'Pizza'可能会起作用(就像in ('Pizza', 'Pizza,Salad')一样,但似乎需要在列出了所有可能的排列,看起来不太好!
标签: python sqlite group-by group-concat having