我读过很多关于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/