如何合并 2 mysql 行并得到一行

how to combine 2 mysql rows and get one row

我有一个 table 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

我想要得到孟买所有行的结果,但地址是德里而不是孟买? 在这里我有 id 1 和 2 有相同的 test_id 和 3 和 4 也有。输出如下,

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

像这样的自连接:

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'

@danblack 写的是正确的,但是要 select 孟买的 orig_id 你需要像下面这样写你的 select。

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' 

编辑 :

sorry here i change my result on question, can i get all the rows of mumbai but address is delhi instead of 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'