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