我读过很多关于self-join的例子,但它们似乎没有涵盖某些字段不在某些行中的情况。
例如,我有一个数据库:

testId, testItem, testResult

行:
 1,test1,1
 1,test2,0
 1,test3,1
 2,test1,0
 2,test4,1
 2,test5,1

我想要输出:
testItem,a.testId,b.testId,a.testResult,b.testResult
test1,1,2,1,0
test2,1,NULL,0,NULL
test3,1,NULL,1,NULL
test4,NULL,2,NULL,1
test5,NULL,2,NULL,1

本质上,我想比较来自两个不同testid(1和2)的每个testItem(test1->test5),并比较它们的testResult值,将可能不具有相同测试项的testid分解。

最佳答案

根据您的具体要求,您可以尝试:

select testItem
     , max(case when testID = 1 then testID else null end) as testID1
     , max(case when testID = 2 then testID else null end) as testID2
     , max(case when testID = 1 then testResult else null end) as testResult1
     , max(case when testID = 2 then testResult else null end) as testResult2
from mytable
where testID in (1,2)
group by testItem

这就对你的数据做了很多假设,所以要谨慎行事。

关于mysql - MySQL比较具有空条目的行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14551249/

10-11 01:36