如何合并 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'
我有一个 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'