2012-03-15 2 views
1

У меня проблема с одним MySQL Query. У меня есть таблица с folowing структурой:Как найти совпадающие записи в разных столбцах с помощью 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

+0

My плохо - неправильно вопрос. Отредактировано для исправления. –

Смежные вопросы