这一次,我会问一些有用的东西,但是当数据很大时,它会失败。
我的案例在这篇文章中是相同的。
我用过
SELECT `ID`, `PDBID`, `Chain`, `UniProtID`, `PDBASequence`, `pI`, `experiment`, `resolution`
FROM protein p
WHERE `resolution`= (SELECT MAX(`resolution`)
FROM protein
GROUP BY `PDBASequence`
HAVING `PDBASequence` = p.`PDBASequence`)
我也尝试过:
SELECT `ID`, `PDBID`, `Chain`, `UniProtID`, `PDBASequence`, `pI`, `experiment`, `resolution`
FROM protein p
WHERE `resolution`= (SELECT MAX(`resolution`)
FROM protein
WHERE `PDBASequence` = p.`PDBASequence`)
我必须根据PDBASequence按序列分组。但是,同时选定的代表必须是具有最大分辨率值的代表。
我在一小组上试过这段代码。工作没问题。但是,当我试图在具有80980行的真实表上运行它时,执行几乎永远。另外,由于执行类型和口袋大小,我的其他计算机给Mysql服务器带走了错误。我修复了my.ini中的设置并再次运行代码。没有改变。仍然没有结果:( 我该怎么办? 谢谢 我在蛋白质表中分配了分辨率的索引。但是,它没有改变任何东西。
答案 0 :(得分:0)
看看这个版本是否更好。
SELECT p.`ID`, p.`PDBID`, p.`Chain`, p.`UniProtID`, p.`PDBASequence`, p.`pI`, p.`experiment`, p.`resolution`
FROM protein p
INNER JOIN (SELECT PDBASequence, MAX(`resolution`) AS MaxResolution
FROM protein
GROUP BY `PDBASequence`) q
ON p.PDBASequence = q.PDBASequence
AND p.resolution = q.MaxResolution