2009-01-23 68 views
0

我有一个数据库表充满了一些非常丑陋和混乱的数据。在一个单独的表中,我有一个更清晰的数据版本,它们通过一个id链接,但我需要保持凌乱的数据集,并且无法覆盖它,因为我使用它来检查数据差异。MySQL行优先

我想将数据合并到一个新表中,或者跨两个表使用单个查询并在结果中给出干净的表结果优先级。所以如果id = 3 uglydata = x7z cleandata = xyz,那么我会得到干净的数据,如果cleandata为空,我会得到丑陋的数据。 我试着选择cleandata AS丑陋数据,希望mysql会覆盖其他字段,但这不起作用(是的,它很奇怪,我认为这是行不通的)。

他们是一个很好的方法来做到这一点? 我能想到的另一种解决方案是如果只是首先从干净的数据中插入新表格,然后插入丑陋的数据,因为出价是唯一的。

但我希望我能够按类型或其他方式优先考虑结果。

回答

3
SELECT IFNULL(cleandata, uglydata) 
FROM uglytable 
LEFT OUTER JOIN cleantable 
ON clean_id = ugly_id 
+0

这真棒Quassnoi! 我一直在寻找如何做到这一点的日子! 谢谢! – pedalpete 2009-01-23 22:52:26