我已经尝试过用PHP进行以下操作的简单SQL,但结果却不正确,我找不到“谷歌”解决方案的好方法。我有一个表valoreguide2,该表可容纳200,000条该表中具有多个列的记录,这些重复的行在某些列中具有不同的值,而在其他列中具有相同的值。我想取所有值并将它们放在新表中,同时我要合并标记为isbn的列中具有相同值的行,并将这些行的所有值保留在新表的一行中桌子。
如果看不到图像,则它是一个包含20列的表格,其中包括一个自动递增字段。我想从该表中获取所有信息,然后将其插入具有不同列标题的另一个表中,但基于isbn对其进行组合。我写的代码如下:
`$results = $conn->query("select * from valoreguide2 group by isbn");
while ($row12 = $results->fetch_assoc()) {
$isbn = $row12['isbn'];
$APrice =$row12['Acomm'];
$AQty=$row12['Aqty'];
$IPrice =$row12['Icomm'];
$IQty=$row12['Iqty'];
$SPrice =$row12['Scomm'];
$SQty=$row12['Sqty'];
$TPrice =$row12['Tcomm'];
$TQty=$row12['Tqty'];
$NPrice =$row12['Ncomm'];
$NQty=$row12['Nqty'];
$BBPrice =$row12['BBcomm'];
$BBQty=$row12['BBqty'];
$guide_prices = array('amtext'=>(float)($APrice), 'ingram'=>(float)($IPrice), 'sterling'=>(float)($SPrice), 'tichenor'=>(float)($TPrice), 'nebraska'=>(float)($NPrice), 'BB'=>(float)($BBPrice), );
$bestGuidePrice = max($guide_prices);
$bestGuidePrice = number_format($bestGuidePrice,2,'.','');
foreach ($guide_prices as $key => $val) {
if ($val == max($guide_prices))
{
$bestGuide = $key;
}
}
$valoreprice=(($bestGuidePrice/1.15)-5);
$conn->query("insert into valorebest2 (isbn, aprice, iprice, sprice, tprice, nprice, bookbyte, bestprice, valore, bestguide) values ('$isbn','$APrice','$IPrice','$SPrice','$TPrice','$NPrice','$BBPrice','$bestGuidePrice','$valoreprice','$bestGuide') ");
}`
但是结果不是将行合并在一起,而是在选择行。.如果我没有提供足够的信息,请告诉我..当有人要说嘿时,我不想打来敲去,您错过了逗号。
编辑:
使用MySQL
您能否具体说明数据库,您使用的是:Oracle,MS SQL,MySql ..?
这是它基于ansi SQL的答案。希望能帮助到你
测试数据。
CREATE TABLE tbs_test (ID, ISBN, A, B, C, D) AS SELECT 1,'0001','A','B','C',10 FROM DUAL UNION ALL SELECT 2,'0002','A',null,null,null FROM DUAL UNION ALL SELECT 3,'0002',null,'B',null,null FROM DUAL UNION ALL SELECT 4,'0002',null,null,'C',null FROM DUAL UNION ALL SELECT 5,'0003','A',null,'C',10 FROM DUAL UNION ALL SELECT 6,'0003',null,null,null,10 FROM DUAL UNION ALL SELECT 7,'0004',null,null,'C',10 FROM DUAL;
该选择按isbn分组,并采用位于同一isbn的行中的每一列的最小值。
select isbn, min(A), min(B), min(C), min(D) from tbs_test group by isbn order by isbn;
该选择按isbn分组,取A,B,C的最小值并求和D
select isbn, min(A), min(B), min(C), sum(D) from tbs_test group by isbn order by isbn;
希望这可以帮助 :-)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句