我遇到一个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查询以显示匹配的行?
我为我的英语道歉。 提前谢谢!
答案 0 :(得分:1)
您可以使用交叉产品执行此操作:
SELECT * FROM table t1, table t2 WHERE t1.c1=t2.c1 OR t1.c1=t2.c2
答案 1 :(得分:-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