как объединить 2 строки MySQL и получить одну строку - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть таблица report_card и,

Пример данных, как показано ниже.

report_id  orig_id   test_id        name     address
------------------------------------------------------
1           JH06E     IN2001         xyz      delhi
2           HL789     IN2001         abc      mumbai
3           ZPYNR     IN2002         pqr      mumbai
4           5R4HJ     IN2002         mno      delhi

, и я хочу, чтобы в результате я получил все строки в Мумбаи, но адрес - это Дели, а не ДелиМумбаи?здесь у меня есть идентификаторы 1 и 2 имеют такой же test_id и 3 и 4 также.Вывод, как показано ниже,

report_id  orig_id   test_id        name     address
------------------------------------------------------
 2           HL789     IN2001         abc      delhi
 3           ZPYNR     IN2002         pqr      delhi

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

То, что написал @danblack, правильно, но чтобы выбрать orig_id Мумбаи, вам нужно написать свой выбор следующим образом.

SELECT t1.report_id, 
       t2.orig_id, 
       t1.test_id, 
       t1.name, 
       t1.address 
FROM   mytable t1 
       INNER JOIN mytable t2 
               ON t1.test_id = t2.test_id 
WHERE  t1.address = 'delhi' 
       AND t2.address = 'mumbai' 

Редактировать :

извините, я изменяю свой результат по вопросу, могу ли я получить все строки в Мумбаи, но адрес - это Дели, а не Мумбаи

Вы также можете сделать это с помощью подзапроса, как показано ниже.

SELECT t1.report_id, 
       t1.orig_id, 
       t1.test_id, 
       t1.name, 
       (SELECT address 
        FROM   mytable m 
        WHERE  m.test_id = t1.test_id 
               AND m.address = 'delhi' 
        LIMIT  1)AS address 
FROM   mytable t1 
WHERE  t1.address = 'mumbai' 

Но, глядя на ваши данные и ожидаемый результат, вам просто нужно выполнить следующие действия:

SELECT t1.report_id, 
       t1.orig_id, 
       t1.test_id, 
       t1.name, 
       'delhi' address 
FROM   mytable t1 
WHERE  t1.address = 'mumbai' 
0 голосов
/ 28 февраля 2019

Самостоятельное соединение как:

SELECT t1.report_id, t1.orig_id, t1.test_id, t1.name, t2.address
FROM report_card t1
JOIN report_card t2
  ON t1.test_id = t2.test_id
WHERE
  t1.address = 'mumbai' AND
  t2.address = 'delhi'
...