Отдельные мультиколонки - PullRequest
       12

Отдельные мультиколонки

1 голос
/ 03 октября 2009

Для этой таблицы:

mysql> select * from work;
+------+---------+-------+
| code | surname | name  |
+------+---------+-------+
|    1 | John    | Smith |
|    2 | John    | Smith |
+------+---------+-------+

Я хотел бы получить пару кодов, где имена равны, поэтому я делаю это:

select distinct A.code, B.code from work A, work B where A.name = B.name group by A.code, B.code;

Однако я получаю следующий результат:

+------+------+                                                                                         
| code | code |                                                                                         
+------+------+                                                                                         
|    1 |    1 |
|    1 |    2 |
|    2 |    1 |
|    2 |    2 |
+------+------+

Как видите, этот результат содержит 2 дубликата, очевидно, из декартового произведения. Я хотел бы узнать, как я могу сделать это так, чтобы он выводил только:

+------+------+                                                                                         
| code | code |                                                                                         
+------+------+                                                                                         
|    1 |    2 |
+------+------+

Есть подсказка? Спасибо!

Ответы [ 2 ]

2 голосов
/ 03 октября 2009

Это должно работать (при условии, что code является первичным ключом):

SELECT A.code, B.code
FROM work A, work B
WHERE A.name = B.name AND A.code < B.code
2 голосов
/ 03 октября 2009

попробуйте

  Select A.Code, B.Code
  From work a
     Join work b
         On A.surname = b.surname
            And A.Name = B.Name
            And A.Code > B.Code

Вам нужно использовать A.Code> B.Code вместо! =, Чтобы исключить ошибки типа

{1, 2} и {2, 1}

(Если вас волнует только одно и то же имя, а не фамилия, исключите этот предикат из условия объединения)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...