Mysql 选择并由多行值确定

Mysql 选择并由多行值确定,mysql,sql,Mysql,Sql,假设我有一桌人,一桌水果和一桌喜欢的东西 People fruit likes +-----+--------+ +-----+---------+ +-----+-----+ | pid | people | | fid | name | | pid | fid | +-----+--------+ +-----+---------+ +-----+-----+ | 1 | Mary | |

假设我有一桌人,一桌水果和一桌喜欢的东西

People              fruit               likes
+-----+--------+    +-----+---------+   +-----+-----+
| pid | people |    | fid |  name   |   | pid | fid |
+-----+--------+    +-----+---------+   +-----+-----+
|  1  | Mary   |    |  1  | appple  |   |  1  |  1  |
|  2  | Tom    |    |  2  | orange  |   |  2  |  1  |
|  3  | John   |    |  3  | banana  |   |  2  |  2  |
|  4  | George |    |  4  | coconut |   |  2  |  3  |
...
我想做一个查询,可以搜索喜欢苹果和橙色的人:

Result
+----------+---------------
| People   |  likes
+----------+---------------
| Tom      | apple, orange, banana
事实上,我也想知道如何在不同的条件下做出相同的输出,比如喜欢橘子而不喜欢苹果的人或者不喜欢香蕉的人等等

SELECT   people
FROM     People
    JOIN likes USING (pid)
    JOIN fruit USING (fid)
GROUP BY pid
然后:

喜欢苹果和橘子的人

HAVING   SUM(name='apple') AND SUM(name='orange')
喜欢桔子而不喜欢苹果的人

HAVING   SUM(name='orange') AND NOT SUM(name='apple')
HAVING   NOT SUM(name='banana')
喜欢桔子而不喜欢苹果的人

HAVING   SUM(name='orange') AND NOT SUM(name='apple')
HAVING   NOT SUM(name='banana')

查看它们。

这是一个基本的sql查询,您可以自己尝试。我尝试了。。。无论如何,我得到了我的答案。谢谢!这是有效的:事实上,我花了一整天的时间和一堆内部的左右连接和组连接。不管怎么说,我感到非常沮丧: