SQL 仅显示同时包含这两项的结果
我有一个 SQL 表,其中包含人们吃的名字和水果。 我只想结果显示同时吃了苹果和香蕉的人的名字。但是,如果我使用“Where Item='Banana' and item='Apple',则数据不会显示任何内容。 如果我使用:Where item in('banana','apple'),它会显示如表中所示的结果。
名称 | 物品 |
---|---|
约翰 | ·苹果 |
大卫· | 香蕉 |
约翰· | 香蕉 |
I have a SQL table with names and fruits that the persons ate.
I only want the result to show the Names of people who ate both an apple and a banana. But if i use "Where Item='Banana' and item='Apple', the data shows nothing.
If i use: Where item in('banana','apple'), it shows the result as shown in the table.
Name | Item |
---|---|
John | Apple |
David | Banana |
John | Banana |
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我们可以进行 GROUP BY,然后只选择从列表中吃过 2 个水果的人,即两个
db<>fiddle 此处
We can do a GROUP BY and then select only the person who has eaten 2 fruits from the list, ie both of them
db<>fiddle here
基本上创建数据的两个子集,并在数据相交的地方将它们连接在一起。还有很多其他方法可以做到这一点,但我发现 CTE(公用表表达式)是最优雅的
Basically create two sub-sets of the data and join them together where the data intersects. There are plenty of other ways to do this but I find CTE (Common Table Expressions) the most elegant
使用子查询应该适用于任何 RDBMS:
Using a subquery should work in any RDBMS:
您可以将
DISTINCT
与EXISTS
子句一起使用来获取所需的内容。You can use
DISTINCT
with anEXISTS
clause to get what you need.