php - Mysql 查询查找多个表的多个列中共有的记录。

标签 php mysql sql

表1

- | a  | b  | C  | d  | e  |
- |----+----+----+----+----|
- | 1  | 2  | 3  | 2  | 9  |
- | 2  | 3  | 2  | 3  | 5  |
- | 3  | 8  | 4  | 4  | 2  |  
- | 4  | 9  | 8  | 5  | 3  | 
- | 5  | 1  | 9  | 7  | 1  |   
- | 6  | 12 | 10 | 9  | 10 |

表2

- | a2 | b2 | C2 | d2 | e2 |
- |----+----+----+----+----|
- | 1  | 2  | 3  | 2  | 9  |
- | 2  | 3  | 2  | 3  | 5  |
- | 3  | 8  | 4  | 4  | 2  |  
- | 4  | 9  | 8  | 5  | 3  | 
- | 5  | 1  | 9  | 7  | 1  |   
- | 6  | 12 | 10 | 9  | 10 |

我想要的结果:

2,3

因为 2 和 3 在这两个表的所有列中都很常见。

我已经尝试过:

SELECT DISTINCT c1.a FROM  `table1` c1 
JOIN  `table1` c2 ON ( c1.a = c2.b )  
JOIN  `table1` c3 ON ( c2.b = c3.c )  
JOIN  `table1` c4 ON ( c3.c = c4.d )  
JOIN  `table1` c5 ON ( c4.d = c5.e )
LIMIT 0 , 10

它适用于 table1,但如何连接更多表。

最佳答案

完全一样:

SELECT DISTINCT c1.a FROM  `t1` c1 
JOIN  `t1` c2 ON ( c1.a = c2.b )  
JOIN  `t1` c3 ON ( c2.b = c3.c )  
JOIN  `t1` c4 ON ( c3.c = c4.d )  

JOIN  `t2` c5 ON ( c4.d = c5.a )  
JOIN  `t2` c6 ON ( c5.b = c6.c )  
JOIN  `t2` c7 ON ( c6.c = c7.d )  
LIMIT 0 , 10

检查这个 fiddle :http://sqlfiddle.com/#!2/46ade/6

关于php - Mysql 查询查找多个表的多个列中共有的记录。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22412373/

相关文章:

php - 从 $类别中选择 *

PHP - 查询空值

php - 这里我的 SQL 语法有什么问题?

php - 使用php更新一次sql表字段

php - 计数while循环,在特定的循环时间内做其他事情并继续while循环

php - 在 Symfony 的选择选项中设置默认值?

php - 在 web 服务器内置的 php 中运行 symfony 2 项目

mysql - 从 Mysql 中的 IP 地址中删除点

php - 从另一个表中选择多个列,其中字段包含数组

sql - PostgreSQL 在选择查询中重用计算结果