2012-03-15 48 views
1

我有一个MySQL查询的问题。 我有如下因素结构的表格:如何在使用MySQL的不同列中找到匹配的记录?

+------+------+------+ 
| c1 | c2 | c3 | 
+------+------+------+ 
| AA | A-A | 11 | - row1 
| B-B | BB | 12 | - row2 
| A-A | AA | 13 | - row3 
| BB | B-B | 14 | - row4 
| CC | C-C | 15 | - row5 
| CC | C-C | 16 | - row6 
| DD | DDD | 17 | - row7 
+------+------+------+ 

IF(记录在C1 ==记录在C2) - >线匹配

IF(在C1 ==记录记录在C1) - >线匹配

row1 match row3 

row2 match row4 

row5 match row6 

我怎样才能创建MySQL查询显示我匹配的行吗?

我,我的英语道歉。 在此先感谢!

回答

1

您可以用交叉产品做到这一点:

SELECT * FROM table t1, table t2 WHERE t1.c1=t2.c1 OR t1.c1=t2.c2 
-1

如果加入表本身,你可以指定它应该匹配什么样的条件。只要给它的两个不同的别名是这样的:

SELECT table1.*, 
      table2.* 
     FROM nameoftable table1 
INNER JOIN nameoftable table2 
     ON (table1.c1 = table2.c2 
      OR table1.c1 = table2.c1) 

您可能会发现,它抱怨,因为你将有相同的列名的每个表,在这种情况下,你需要不使用指定每一列的别名*(这是不是最好的做法,因为反正你比你的需要,这是比较慢,可以取回更多数据):

SELECT table1.c1 AS t1c1, 
     table1.c2 AS t1c2, 
     table1.c3 AS t1c3, 
     table2.c1 AS t2c1, 
     table2.c2 AS t2c2, 
     table2.c3 AS t2c3 
+0

没有解决的情况下,其中C1 = C1 – Macros 2012-03-15 09:40:51

+0

我的坏 - 误读的问题。编辑修复。 – 2012-03-15 09:41:55

相关问题