MySQL SELECT FROM a relation table WHERE 他们有相同的亲戚

标签 mysql sql

我遇到的情况是有一个这样的关系表:

eaters:

id   name     fruit
1    jack     banana
2    jack     apple
3    jane     banana
4    jane     apple
5    jane     orange
6    richard  banana
7    richard  apple

现在,谁吃过和“ jack ”一样的水果?

例如在上表中,'Richard' 就是答案。

我想到的伪查询是:

SELECT name AS the_guy 
FROM eaters 
WHERE 
  (SELECT fruit FROM eaters WHERE name=the_guy) = 
  (SELECT fruit FROM eaters WHERE name='jack')

而且我不知道这在 MySQL 中是否可行。现在我获取整个表并使用 PHP 从结果中提取答案,这不是一个好的方法。有什么建议吗?

最佳答案

你可以这样写:

SELECT e2.name
FROM   eaters e1
      INNER JOIN eaters e2
              ON e1.fruit = e2.fruit
WHERE  e1.name = 'Jack'
      AND e2.name != 'Jack'
GROUP  BY e2.name 

关于MySQL SELECT FROM a relation table WHERE 他们有相同的亲戚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53738339/

相关文章:

mysql - mysql中多个值的不同值

MySQL 强制 MySQL 使用它认为不可能的索引

sql - 列的创建和使用

sql - 将 CSV 从 Blob 存储批量加载到 SQL 数据库

sql - 为什么sql不比较时间?

php - 无法执行在 phpMyAdmin 中运行的 mysql

php、mysql 和 phpmyadmin、MAMP 或 Homebrew 软件

sql - 使用 64 位 postgresql odbc 驱动程序

php - 如何从mysql到php对月份进行排序

MYSQL:选择部分文本并根据点位置将其剪切